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