Запрос с более высокой производительностью

#sql

Вопрос:

У меня слишком медленный SQL-запрос, потому что «пользовательский столбец». как я могу сделать это лучше?

вот код:

 select  VBI.ID_acesso,  VBI.data_hora AS Data_Hora_Entrada,  VBI.data AS Data_Entrada,  VBI.Sentido AS Sentido,  VBI.Unidade AS Unidade,  replace(replace(VBI.Documento,'.',''),'-', '') AS Documento,  VBI.Tipo_Documento,  VBI.Nome,  VBI.Tipo_Usuario AS Tipo_Usuario,  VBI.Categoria AS Tipo_Pessoa,  VBI.Empresa_Usuario,  VBI.Visitado,  VBI.Tipo_Documento_Visitado,  (  SELECT  MIN(VBI2.DATA_HORA)  FROM  Ses.dbo.VIEW_Mand_Dashboard_BI VBI2  WHERE  VBI2.documento = VBI.documento  AND VBI2.ID_acesso gt; VBI.ID_acesso  AND VBI2.Tipo_Documento = VBI.Tipo_Documento  AND VBI2.Sentido = 'Saída'  AND VBI2.data_hora gt;= VBI.data_hora  ) as Data_hora_Saida FROM  Ses.dbo.VIEW_Man_Dashboard_BI VBI WHERE  VBI.[data] gt;= CONVERT(DATE,'2021-10-01')  and VBI.Sentido = 'Entrada'  and VBI.Empresa_Usuario NOT IN ('CAMPSEG') order by  VBI.Unidade, VBI.data_hora;  

Часть, которая замедляет мой запрос, — это столбец: Data_hora_Saida

Комментарии:

1. MIN(VBI2.DATA_HORA) вероятно, в этом и заключается проблема. Сколько строк у вас в этой таблице?

2. Помечайте только ту базу данных, которую вы используете.

3. около 4-5 миллионов рядов

Ответ №1:

Может быть, попробуем

 (SELECT TOP 1 *  FROM Ses.dbo.VIEW_Mand_Dashboard_BI VBI2  WHERE VBI2.documento = VBI.documento  AND VBI2.ID_acesso gt; VBI.ID_acesso  AND VBI2.Tipo_Documento = VBI.Tipo_Documento  AND VBI2.Sentido = 'Saída'  AND VBI2.data_hora gt;= VBI.data_hora  ORDER BY VBI2.DATA_HORA ) as Data_hora_Saida  

Комментарии:

1. DATA_HORA = ДАТА И ВРЕМЯ

2. Вы пробовали, и это не сработало? TOP должен работать datetime .

3. Попробуйте только это SELECT утверждение проверить, дает ли оно вам правильные результаты, затем добавьте его в полное утверждение и посмотрите, что оно вам даст.

4. спасибо за подсказку.. что ТОП-1 снизил хорошую производительность во время

Ответ №2:

Можете ли вы попробовать использовать подзапрос, столбец Data_hora_Saida вместо добавления в раздел «ВЫБОР»

Комментарии:

1. извини, я новенькая. как я могу это сделать?