當表有數千條記錄時,SQL TOP 1查詢執行速度非常慢?當表有數千條記錄時,SQL TOP 1查詢執行得非常慢?
select Top 1 * from AA011 WHERE order By datadate DESC
當表有數千條記錄時,SQL TOP 1查詢執行速度非常慢?當表有數千條記錄時,SQL TOP 1查詢執行得非常慢?
select Top 1 * from AA011 WHERE order By datadate DESC
查看查詢的執行計劃。
很可能您會看到類似表/聚集索引掃描的內容,然後進行排序。這意味着你沒有建立在你的表的datadate
字段上的索引 - 所以SQL服務器必須從表中檢索所有數據並對它進行排序以獲得最高1值。
如果您將在此列上創建索引,SQL Server將使用此索引而不是檢索所有數據並對其進行排序 - 因此它將大大提高性能。
創建clustered index
上datadate
列應加快這一進程
CREATE CLUSTERED INDEX AA011_datadate ON AA011(datadate DESC)
我已經在datadate列上創建聚簇索引,所以我必須在datadate上使用非聚簇索引? –
與聚集索引一起去,因爲數據是按索引順序物理存儲的 –
@MohanSingh它取決於你的表結構和它的用法。通常,在自動增量ID /主鍵字段以外的字段上使用聚簇索引並不是一個好主意。聚集索引定義數據的物理存儲順序,所以對於'datadate'上的聚簇索引,如果您將表中的記錄插入到不是'datadate'的順序中--SQL服務器每次都會使用整個表,所以它可以降低插入的性能。 –
您可以發佈查詢ATLEAST –
查看查詢計劃 - 也許它做一個表掃描。 –
你有'datadate'字段的索引嗎? – valex