SELECT TOP 10 dic.item_cd,
dic.item_knm,
dic.item_enm
FROM tbus.dt_item_com dic
INNER JOIN tbus.mfProd mfp ON dic.item_cd LIKE mfp.prodId
INNER JOIN tbus.plu_category plc ON mfp.prodType LIKE plc.plc_prodType
WHERE (dic.item_knm LIKE '%%'
OR (dic.item_enm LIKE '%%')
AND (dic.item_cd NOT IN
(SELECT TOP 0 dic.item_cd
FROM tbus.dt_item_com dic
INNER JOIN tbus.mfProd mfp ON dic.item_cd LIKE mfp.prodId
INNER JOIN tbus.plu_category plc ON mfp.prodType LIKE plc.plc_prodType
WHERE (dic.item_knm LIKE '%%'
OR dic.item_enm LIKE '%%')
ORDER BY dic.item_cd DESC))
ORDER BY dic.item_cd DESC
Это SQL-запрос, который я пытаюсь оптимизировать.Оптимизация запроса SQL Server
Что это за запрос: Inner Соедините три таблицы по именам элементов (в настоящее время это просто «%%». Это будет что-то вроде «% apple%» позже »). И, потому что это для пейджинга, у него также нет синтаксиса IN.
Проблема в том, что есть два дублированных INNER JOIN & WHERE фразы - один внутри внутри НЕ IN, а другой снаружи. Как я могу удалить эти дублированные коды и сделать его быстрее :(
(Он основан на SQL Server 2000)
какие индексы у вас – tomsv
Это делает TOP 0 значит, что там с NOT IN ли.?? это особый смысл? Вы пытаетесь сделать пейджинг путем исключения? – usr
dontamaso // К сожалению, индекса числа нет. Odering item_cd (код товара) будет способом их индексирования. – Raccoon