sql專欄
sql基礎知識彙總
sql高階知識彙總
提到索引,想必小夥伴們都知道,它是為了提高查詢效率而生。但是在查詢過程中,怎麼才能讓我們的查詢語句使用索引?相必大家或多或少都會遇到這樣的問題。今天我們就來回答這個問題。
1
聚集索引和非聚集索引
索引一般分為聚集索引和非聚集索引。
聚集索引速度很快,但只能建乙個,所以盡量把經常使用的列建成聚集索引。
非聚集索引雖然沒聚集索引快,但是可以建多個,比全表掃瞄快。
2
如何建立高效的索引
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的失效也會跟著失效,這裡記住即可。
3
什麼情況不適合建立索引
由於建立索引和維護索引耗時,時間隨著資料的增加而增加,成正比;需要佔物理空間;當對表中的資料進行維護時,對索引也要進行維護,這樣就降低了資料的維護速度。基於這些缺點,以下情況不適合建立索引
SQL的那些事兒
sql語言有以下幾個部分 sql的ddl包含 sql標準支援多種固有型別,包括 create table r a1 d1,a2 d2,an dn,完整性約束1 完成性約束k sql支援許多不同的完整性約束,sql禁止破壞完整性約束的任何資料庫更新 primary key aj 1 aj 2 aj m...
Mysql那些事兒之(八)索引
一 用alter語句建立與刪除索引 索引有一下三種情況 index 普通的索引,索引的列可以包含重複的值。unique 唯一索引,保證了索引的列不包含重複的值。primary key 它是乙個具有primary 的unique索引。這表示乙個表只能包含乙個primary key。alter tabl...
SQL優化之索引
sql優化有很多方法,今天來說一說資料庫索引。舉例說明 假設有乙個圖書book表,裡面有欄位id,name,isbn等。如果圖書數量巨大的話,我們通過isbn查詢通常是比較慢的。新增索引 create index index isbn on book isbn 查詢時間從0.134縮短到0.001,...