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 查询。
这个查询的作用是按项目名称内连接三个表(目前它只是'%%'。稍后会变成'%apple%')。而且,因为这是用于分页的,它也没有 IN 语法。
这里的问题是有两个重复的 INNER JOIN & WHERE 短语 - 一个在 NOT IN 内部,另一个在外部。如何删除这些重复的代码并使其更快:(?
(它基于 SQL Server 2000)