2010-10-23 144 views
0

我有這樣奇怪的SQL Server查詢速度慢

SELECT TOP 10 
     * 
    FROM NEWS 
    WHERE newsid > AAA 
ORDER BY newsid desc; 

這個查詢的查詢是AAA

的一些值,例如它是快速1,000,000和1,400,000很慢,但它是緩慢的1355316

我很困惑!!!

+2

您可以發佈查詢的執行計劃爲1,400,000而查詢計劃爲1,355,316嗎? – InSane 2010-10-23 18:23:15

+0

發佈'NEWS'表的CREATE TABLE語句。發佈的查詢是否不包含單引號中的「AAA」,是否是一個錯字? – 2010-10-23 18:30:56

回答

1

我的第一個想法是,它正在進行大量的字符串比較,也可能在您的情況下有1,355,316條記錄,要麼字符串值很長,要麼表被分段。

桌子上有索引嗎?

要開始閱讀有關查詢優化的內容,請閱讀thisthis

+0

1,300,000和1,400,000或1,000,000之間有什麼區別。 – ehsan 2010-10-23 18:26:16

+0

查詢在沒有索引的情況下執行得更快! – ehsan 2010-10-23 18:26:53

+0

這就是爲什麼我認爲桌子可能是零散的。也許你可以發佈執行計劃,並告訴我們 - 表上的所有索引(包括主鍵)是什麼。 – 2010-10-23 18:27:16

0

如果在Sql Server 2008中嘗試使用FORCESEEK提示。你會得到可預見的結果。