У меня есть этот SELECT
с помощью SQL Server 2012:Как сделать ВЫБРАТЬ быстрее
SELECT
dcodigo AS cuenta,
SUM(dvalordeb) AS sumadebitop,
SUM(dvalorcre) AS sumacreditop
FROM
diario
WHERE
diario.anulado = 0
AND LEN(diario.dcodigo) > 0
AND MONTH(diario.dfecha) <= 11
AND YEAR(diario.dfecha) = 2015
AND diario.tipo1 <> 'CI'
GROUP BY
dcodigo
но это занимает около 2,8 минут. Что я могу сделать для более быстрого выполнения?
Таблица diario
индексируется: dcodigo
, dfecha
и tipo1
, и имеет более чем 600 000 строк.
Заранее спасибо
У вас есть какие-либо индексы на вашем столе? В любом случае, вы должны по крайней мере изменить свои фильтры на 'dfecha':' AND dfecha> = '20150101' И dfecha <'20151201'' – Lamak
Об этом почти невозможно сказать, не видя вашу структуру таблицы, индексы или даже план выполнения для этого запроса. – DavidG
Вы не используете индексы на dfecha; когда вы разбираете дату, когда он больше не может использовать этот индекс. если у вас нет индекса функции len (diario.dcodigo), он также не сможет использовать этот индекс. – xQbert