今天看到了乙個貼子,簡單介紹一下:
影響查詢效能的兩個關鍵因素:
索引,表掃瞄次數
所以優化的目標就是怎樣更好的利用索引和減少表掃瞄次數
不過得先知道什麼是索引?索引有什麼特點?有幾種型別的索引?
索引是對資料庫表中一列或多列的值進行排序的一種結構,例如 employee 表的姓(name)列。如果要按姓查詢特定職員,與必須搜尋表中的所有行相比,索引會幫助您更快地獲得該資訊。
索引是乙個單獨的、物理的資料庫結構,它是某個表中一列或若干列值的集合和相應的指向表中物理標識這些值的資料頁的邏輯指標清單。索引提供指向儲存在表的指定列中的資料值的指標,然後根據您指定的排序順序對這些指標排序。資料庫使用索引的方式與您使用書籍中的索引的方式很相似:它搜尋索引以找到特定值,然後順指標找到包含該值的行。 在資料庫關係圖中,您可以在選定表的「索引/鍵」屬性頁中建立、編輯或刪除每個索引型別。當儲存索引所附加到的表,或儲存該錶所在的關係圖時,索引將儲存在資料庫中。
可以基於資料庫表中的單列或多列建立索引。多列索引使您可以區分其中一列可能有相同值的行。 如果經常同時搜尋兩列或多列或按兩列或多列排序時,索引也很有幫助。例如,如果經常在同一查詢中為姓和名兩列設定判據,那麼在這兩列上建立多列索引將很有意義。 確定索引的有效性: 檢查查詢的 where 和 join 子句。在任一子句中包括的每一列都是索引可以選擇的物件。 對新索引進行試驗以檢查它對執行查詢效能的影響。 考慮已在表上建立的索參數量。最好避免在單個表上有很多索引。 檢查已在表上建立的索引的定義。最好避免包含共享列的重疊索引。 檢查某列中唯一資料值的數量,並將該數量與表中的行數進行比較。比較的結果就是該列的可選擇性,這有助於確定該列是否適合建立索引,如果適合,確定索引的型別。
建立索引的優點:
1.大大加快資料的檢索速度;
2.建立唯一性索引,保證資料庫表中每一行資料的唯一性;
3.加速表和表之間的連線;
4.在使用分組和排序子句進行資料檢索時,可以顯著減少查詢中分組和排序的時間。
索引型別: 根據資料庫的功能,可以在資料庫設計器中建立四種索引:唯一索引、非唯一索引、主鍵索引和聚集索引。 儘管唯一索引有助於定位資訊,但為獲得最佳效能結果,建議改用主鍵或唯一約束。
唯一索引:
唯一索引是不允許其中任何兩行具有相同索引值的索引。 當現有資料中存在重複的鍵值時,大多數資料庫不允許將新建立的唯一索引與表一起儲存。資料庫還可能防止新增將在表中建立重複鍵值的新資料。例如,如果在 employee 表中職員的姓 (lname) 上建立了唯一索引,則任何兩個員工都不能同姓。
非唯一索引:
非唯一索引是相對唯一索引,允許其中任何兩行具有相同索引值的索引。 當現有資料中存在重複的鍵值時,資料庫是允許將新建立的索引與表一起儲存。這時資料庫不能防止新增將在表中建立重複鍵值的新資料。
主鍵索引:
資料庫表經常有一列或列組合,其值唯一標識表中的每一行。該列稱為表的主鍵。 在資料庫關係圖中為表定義主鍵將自動建立主鍵索引,主鍵索引是唯一索引的特定型別。該索引要求主鍵中的每個值都唯一。當在查詢中使用主鍵索引時,它還允許對資料的快速訪問。
聚集索引(也叫聚簇索引):
在聚集索引中,表中行的物理順序與鍵值的邏輯(索引)順序相同。乙個表只能包含乙個聚集索引。 如果某索引不是聚集索引,則表中行的物理順序與鍵值的邏輯順序不匹配。與非聚集索引相比,聚集索引通常提供更快的資料訪問速度。
貼子內容:
SQL及索引優化
一 問題sql篩選步驟 1 檢查慢日誌是否開啟 2 檢查慢日誌路徑 檢查慢日誌路徑 3 開始慢查詢日誌 set global slow query log on 4 慢日誌判斷標準 show variables like long query time 5 修改慢日誌判斷標準 由於實際專案中1秒左右...
sql語句優化五(索引的介紹)
一 索引的介紹 sql索引在資料庫優化中占有乙個非常大的比例,乙個好的索引的設計,可以讓你的效率提高幾十甚至幾百倍,在這裡將帶你一步步揭開他的神秘面紗。sql索引有兩種,聚集索引和非聚集索引,索引主要目的是提高了sql server系統的效能,加快資料的查詢速度與減少系統的響應時間 下面舉兩個簡單的...
MySQL優化 SQL及索引優化(二)
對支付時間建立索引 create index idx paydate on payment payment date 查詢 select max payment date from payment 在一條sql中同時查出2006年和2007年電影的數量 優化count 函式 對count函式使用的列...