У меня есть запрос SQL Server, который должен выбрать тот, который был на первой и третьей неделе, на нашем портале, но не заходил на вторую неделю. Моя проблема в том, что запрос ниже занимает около 15 секунд для загрузки. Есть ли более быстрый способ или любая проблема по моему запросу?Запрос SQL Server В разделе
select
count(distinct id)
from
table_x
where
g in (319, 329)
and enable = 1
and Date between '2016-01-18' and '2016-01-24' --Third Week
and id in (select distinct id
from table_x
where g in (319, 329)
and enable = 1
and Date between '2016-01-05' and '2016-01-11' --First Week
and id not in (select distinct id
from table_x
where g in (319, 329)
and enable = 1
and Date between '2016-01-11' and '2016-01-17' --Second Week
)
)
Каков план выполнения вашего запроса? Насколько велики таблицы? Какой у вас индекс? – Dai
«выбрать отдельный» - это дорогостоящая операция. Узнайте, когда следует использовать «select different» и когда не использовать его. Это делает ** НЕ помогать производительности ** в этом запросе. Идентификатор подсказки обычно уникален в таблице, поэтому «select different [id]» - это трата усилий. –
- В таблице больше, чем в миллиметрах. - На самом деле идентификатор не является уникальным идентификатором, а ID пользователя. извините за пропущенное руководство ... – user4277756