簡介
SQL Server查詢分析器是基於開銷的。通常來講,查詢分析器會根據謂詞來確定該如何選擇高效的查詢路線,比如該選擇哪個索引。而每次查詢分析器尋找路徑時,並不會每一次都去統計索引中包含的行數,值的范圍等,而是根據一定條件創建和更新這些信息後保存到數據庫中,這也就是所謂的統計信息。
查看SQL Server的統計信息非常簡單,使用如下指令:
DBCC SHOW_STATISTICS('表名','索引名')
所得到的結果如圖1所示。
圖1.統計信息
下面我們通過一個簡單的例子來看統計信息是如何影響查詢分析器。我建立一個測試表,有兩個INT值的列,其中id為自增,ref上建立非聚集索引,插入100條數據,從1到100,再插入9900條等於100的數據。圖1中的統計信息就是示例數據的統計信息。
此時,我where後使用ref值作為查詢條件,但是給定不同的值,我們可以看出根據統計信息,查詢分析器做出了不同的選擇,如圖2所示。
圖2.根據不同的謂詞,查詢優化器做了不同的選擇