據我所知,每個事務都會看到自己的數據庫版本,因此係統無法從某個計數器獲取總行數,因此需要掃描索引。但我認爲這將是主鍵上的聚集索引,而不是附加索引。如果我有超過一個額外的索引,哪一個將被選擇,無論如何?爲什麼在計算表中的所有行時會出現非聚簇索引掃描?
在深入研究此事時,我發現了另一件奇怪的事情。假設有兩個相同的表格,Articles和Articles2,每個都有三列:Id,View_Count和Title。第一個只有一個聚集的基於PK的索引,而第二個在view_count上有一個額外的非聚集非唯一索引。對於具有附加索引的表,查詢SELECT COUNT(1) FROM Articles
運行速度快2倍。
是的,當我發佈第二部分並仔細查看計劃時,我想到了這一點。集羣索引掃描具有相同的CPU成本但IO成本較高。 – synapse 2012-03-07 06:14:58