添加一个OR后,SQL Query执行速度极慢

时间:2015-08-14 07:39:50

标签: sql sql-server windows-server-2012-r2

我遇到过这个问题,我不得不在搜索查询中添加另一个表来满足客户的需求。

搜索结果是正确的,但如果搜索字长度为3个或更少,则搜索过程需要5秒(直接在服务器上的SSMS工具上测试)

查询如下所示:

SELECT 
    Kundendaten$.ID, 
    Kundendaten$.firmenname1, 
    Kundendaten$.firmenname2, 
    Kundendaten$.strasse, 
    Kundendaten$.uid, 
    Kundendaten$.lkw12t, 
    Kundendaten$.lkw3t, 
    Kundendaten$.gesperrt 
FROM Kundendaten$
LEFT JOIN Kundentyp$ ON Kundendaten$.ID = Kundentyp$.Kunden_ID
WHERE Kundentyp$.ext_kdnr LIKE '%nox%'
   OR ( 
          Kundendaten$.firmenname1 LIKE '%nox%'
       OR Kundendaten$.firmenname2 LIKE '%nox%'
       OR Kundendaten$.suchwort LIKE '%nox%'
       OR Kundendaten$.gehr_kundennummer LIKE '%nox%'
       OR Kundendaten$.kundenummer LIKE '%nox%'
       OR Kundendaten$.uid LIKE '%nox%'
       OR Kundendaten$.ID LIKE '%nox%'
   )
ORDER BY Kundendaten$.ID ASC
OFFSET 0 ROWS FETCH NEXT 10 ROWS ONLY

由于我添加了表格" Kundentyp $ .ext_kdnr"因此等待时间过长的问题就出现了。声明

但话又说回来,如果搜索关键字更具体,那么搜索只需几毫秒..

我不知道如何调试这个^^

1 个答案:

答案 0 :(得分:0)

感谢stackoverflowers的帮助,我可以解决这个问题。

问题是,LEFT JOIN在我的查询中被inner join执行,可能导致了冲突。

INNER JOIN的简单更改修复了我的效果问题