星期一, 10月 15, 2007

索引

專科時期買的書,到現在才用到,也算是沒浪費了

何時可利用索引
  • where引數資料篩選
    • SELECT * FROM employee WHERE EmpID = 'xxx' //先替EmpID建立索引,將能提昇查詢速度
    • SELECT * FROM employee WHERE Salary BETWEEN 6000 and 7000 //先替Salary 建立索引,將能提昇查詢速度
*當使用LIKE時,常數字開頭才會使用索引(例:'abc%'),以萬用字元開頭將不會(例:'%仁')
  • Order By
    • SELECT name FROM employee ORDER BY name //建立name索引
  • GROUP By
    • SELECT department,avg(salary) FROM employee GROUP BY department //建立department索引
  • 連結資料表
    • SELECT * FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID //替Customers資料表根據CustomerID欄位建立索引,並替Orders資料表根據CustomerID建立索引,資料表連結速度會大幅提升
SQL Server如何判斷是否要使用索引
  1. 先檢查存在根據適當欄位建立的索引,以及確認此索引是否有助於本次的存取作業
    • 確實存在有助益的索引,SQL Server即會使用索引表的資料記錄,再繼續步驟2
    • 如不存在,即進行「資料表掃描」完成存取作業
  2. 會從根分頁開始,沿著索引樹狀結構尋找查詢所要的資料
  3. 將符合查詢條件資料記錄篩選出來

沒有留言: