0
我在運行mssql 2008數據庫查詢的程序中遇到問題。 我在查詢分析器中做了一些研究。 有一個奇怪的問題有以下兩個查詢:在SQL Server中的性能
SELECT BOLD_ID ,
BOLD_TYPE
FROM ZusatzKlasseBase
WHERE (bold_id IN (SELECT usereintrag
FROM zusatzfeld
WHERE metazusatzfeld = 5211309
AND wertobject = 1298369)
AND bold_id IN (SELECT usereintrag
FROM zusatzfeld
WHERE metazusatzfeld = 5207783
AND wertdatum = '20130415')
)
運行VOR這個查詢是大約一秒鐘
SELECT BOLD_ID ,
BOLD_TYPE
FROM ZusatzKlasseBase
WHERE (BOLD_TYPE IN (336))
AND (bold_id IN (SELECT usereintrag
FROM zusatzfeld
WHERE metazusatzfeld = 5211309
AND wertobject = 1298369)
AND bold_id IN (SELECT usereintrag
FROM zusatzfeld
WHERE metazusatzfeld = 5207783
AND wertdatum = '20130415')
)
該查詢的運行時間爲一分鐘。
我對此沒有任何解釋,字段BOLD_TYPE被索引。 任何人都可以猜測爲什麼更具體的查詢更慢?
感謝您提前提供所有答案。
剛出來的興趣,你爲什麼要執行'select usereintrag from zusatzfeld where ...'這段代碼兩次?爲什麼不用多組邏輯標準來優化代碼呢? – Paul
執行計劃有何不同? – Rob
那麼,BOLD_TYPE有沒有索引?表中有多少行?有多少行的值是336? –