2011-01-26 93 views
2

在編寫複雜的SQL查詢時,如何確保我們使用正確的索引並避免全表掃描?我通過確保只加入具有索引的列(主鍵,唯一鍵等)來完成此操作。這夠了嗎?Sql索引與全表掃描

回答

1

查看查詢的執行計劃以查看查詢優化器是如何認爲必須檢索的。該計劃通常基於表格的統計數據,指數的選擇性和聯合的順序。請注意,優化器可以決定執行全表掃描比索引查找'便宜'。

其他的東西去尋找:

  • 避免子查詢,如果可能的。

  • 減少where子句

+0

你能澄清你的第二點嗎? OR的問題究竟是什麼? – SQB 2014-06-25 09:09:46

4

向數據庫詢問您的查詢的執行計劃,然後從此處繼續。

不要忘記索引出現在where子句中的列。

2

在使用「OR'謂詞
這是很難說什麼是最好的索引,因爲有不同的策略,取決於形勢。儘管如此,你仍然應該對索引進行coupe的工作。

  1. 索引有時會增加select語句的性能,並且總是會降低插入和更新的性能。
  2. 要索引表,不必將其作爲某個字段的鍵。而且,現實生活中的指標幾乎總是包含幾個領域。
  3. 如果您的表現令人滿意,請勿爲「未來目的」創建任何索引。即使你根本沒有索引。
  4. 調整索引時務必嘗試分析執行計劃。不要害怕嘗試。

      +
  5. 表掃描並不總是壞事。

這全是來自我。

1

使用數據庫優化顧問(SQL Server)來分析您的查詢。它會建議必要的索引來增加你的查詢性能