索引在資料庫中是很重要的乙個點,很重要,很重要,很重要!重要的事情說三遍!
mysql官方都索引的定義為:索引(index)是幫助mysql高效獲取資料的資料結構。
一句話來解釋:索引是資料結構。
唯一的標識,主鍵不可重複,只能有乙個列作為主鍵。
避免重複的列出現,唯一索引可以重複,多個列都可以標識為 唯一索引。
預設的,index,key關鍵字來設定。
快速定位資料。
1.新增primary key(主鍵索引)
alter table `table_name` add primary key ( `column` )
2.新增unique(唯一索引)
alter table `table_name` add unique ( `column` )
3.新增index(普通索引)
alter table `table_name` add index index_name ( `column` )
4.新增fulltext(全文索引)
alter table `table_name` add fulltext ( `column`)
5.新增多列索引
alter table `table_name` add index index_name ( `column1`, `column2`, `column3` )
mysql中的索引可以以一定順序引用多列,這種索引叫作聯合索引。如user表的name和city加聯合索引就是(name,city),而最左字首原則指的是,如果查詢的時候查詢條件精確匹配索引的左邊連續一列或幾列,則此列就可以被用到。如下:
select * from user where name=xx and city=xx ; //可以命中索引
select * from user where name=xx ; // 可以命中索引
select * from user where city=xx ; // 無法命中索引
這裡需要注意的是,查詢的時候如果兩個條件都用上了,但是順序不同,如city= xx and name =xx
,那麼現在的查詢引擎會自動優化為匹配聯合索引的順序,這樣是能夠命中索引的。
由於最左字首原則,在建立聯合索引時,索引欄位的順序需要考慮字段值去重之後的個數,較多的放前面。order by子句也遵循此規則。
簡單了解MySQL索引
索引分類 1.普通索引index 加速查詢 2.唯一索引 主鍵索引 primary key 加速查詢 約束 不為空且唯一 唯一索引 unique 加速查詢 約束 唯一 3.聯合索引 primary key id,name 聯合主鍵索引 unique id,name 聯合唯一索引 index id,n...
快速了解MySQL 索引
mysql索引的建立對於mysql的高效執行是很重要的,索引可以大大提高mysql的檢索速度。打個比方,如果合理的設計且使用索引的mysql是一輛蘭博基尼的話,那麼沒有設計和使用索引的mysql就是乙個人力三輪車。索引分單列索引和組合索引。單列索引,即乙個索引只包含單個列,乙個表可以有多個單列索引,...
Mysql深入了解 索引
為什麼b tree把data都移到葉子節點,並且增加雙向鍊錶?b tree比b tree的改進 將data移動到葉子節點,非葉子節點儲存的索引數變多,在高度相等的情況下,能儲存的data更多,查詢效率自然就高了 為什麼使用b tree而不使用紅黑樹或者跳表 區域性性原理 資料和程式都有聚集成群的侵向...