SQL優化:索引的那些事兒
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
提到索引,想必小伙伴們都知道,它是為了提高查詢效率而生。但是在查詢過程中,怎么才能讓我們的查詢語句使用索引?相必大家或多或少都會遇到這樣的問題。今天我們就來回答這個問題。
索引一般分為聚集索引和非聚集索引。 聚集索引速度很快,但只能建一個,所以盡量把經常使用的列建成聚集索引。 非聚集索引雖然沒聚集索引快,但是可以建多個,比全表掃描快。 A.關聯條件上建立索引 例如: SELECT * FROM T1 JOIN T2 ON T1.ORDER_ID=T2.ORDER_ID; 在關聯條件ON后面的兩個列就可以分別建立索引,這樣會很快將符合關聯條件的數據查詢出來。 B.在條件查詢上建立索引 例如: SELECT * FROM T1 WHERE T1.PRICE>20; 在WHERE條件PRICE列上就可以建立索引。 注意:以下幾種情況不會使用索引
C.建立索引的原則
D.聯合索引的妙用 聯合索引就是幾個列合在一起組成一個索引,這種在WHERE條件中相比單列索引會起到意想不到效果。 例如: SELECT * FROM T1 WHERE T1.CITY=‘北京’ AND T1.DISTR='海淀區'; 這個時候將列CITY和DISTR建立成一個聯合索引,效果會更好。 注意:聯合索引需要按順序走,如果中間某個索引不能使用,那它之后的列均不會使用索引。 例如: SELECT * FROM T1 WHERE T1.CITY=‘北京’ AND LEFT(T1.DISTR,3)='海淀區' AND T1.ROAD='#10' 如果我們將CITY,DISTR,ROAD建立成為聯合索引,由于索引的前置規則,只會讓CITY走索引,后面的DISTR因為使用了函數,索引失效,最后的ROAD列因為DISTR的失效也會跟著失效,這里記住即可。
由于創建索引和維護索引耗時,時間隨著數據的增加而增加,成正比;需要占物理空間;當對表中的數據進行維護時,對索引也要進行維護,這樣就降低了數據的維護速度。基于這些缺點,以下情況不適合建立索引
好了,今天的索引就講到這里,對優化感興趣的小伙伴,可以加入我們的QQ群或微信群,大家一起交流學習。 閱讀原文:原文鏈接 該文章在 2025/6/23 12:57:07 編輯過 |
關鍵字查詢
相關文章
正在查詢... |