為了提高查詢排序的速度
索引需要單獨檔案來儲存維護。
表資料發生變化需要維護索引表。
適合新增索引的情況:
表資料量足夠大;
增刪改操作較少;
高基數列
1. 可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。
2. 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。
3. 可以加速表和表之間的連線。
4. 在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和排序的時間。
1. 建立索引,系統要占用大約為表的1.2倍的硬碟和記憶體空間來儲存索引。
2. 更新資料的時候,系統必須要有額外的時間來同時對索引進行更新,以維持資料和索引的一致性。
從資料結構角度1.b+數索引(預設)
2.hash索引 (只能=值查詢,檢索效率高,只有memory引擎支援)
3.fulltext全文索引(現在myisam和innodb引擎都支援了)
4.r-tree索引(用於對gis資料型別建立spatial索引)
從物理儲存角度1、聚集索引(clustered index)
聚簇索引是順序結構與資料儲存物理結構一致的一種索引,並且乙個表的聚簇索引只能有唯一的一條;
2、非聚集索引(二級索引)(non-clustered index)
非聚簇索引記錄的物理順序與邏輯順序沒有必然的聯絡,與資料的儲存物理結構沒有關係;
乙個表對應的非聚簇索引可以有多條,根據不同列的約束可以建立不同要求的非聚簇索引;
單列索引:
普通索引:create index index_name on 表(字段);
唯一索引:create unique index index_name on 表(字段);
全文索引:create fulltext index index_name on 表(字段);
空間索引:create spatial index index_name on 表(字段);
復合索引(組合索引):多列作為索引字段
刪除索引:drop index 名字 on 表;
索引不適合新增過多;
經常作為查詢條件的列適合作為索引列;
但是某些特殊情況下索引會失效: 索引失效的情況部落格sql優化
mysql 整理索引 Mysql索引整理
1 mysql基本單位是頁,大小為16kb 16384 1024 頁是為了增加查詢效率,減少io的互動 區域性性原理 2 頁與頁之間是雙向鍊錶,插入的時候會根據主鍵id進行排序 單葉資料結構.jpg 3 在頁上有乙個頁目錄,相當於把資料進行分組,存放的是當前組最小的主鍵id,指標並且指向對應的資料 ...
mysql 索引 磁碟整理 mysql 索引整理
1 只對 where 和 order by 子句中需要的列新增索引,多餘的索引智慧型導致不必要的硬碟空間愛你消耗。每次修改表資訊時會更新索引,因此有索引的表效能會相應降低。2 對於要使用索引的列要使用屬性 not null 這樣就永遠不會儲存 null 值。3 最好用唯一化索引,一般情況下,當查詢優...
mysql 整理 索引
一 在 command line client 中進行複製 在命令視窗ctrl c是不起作用的,只能靠右擊彈出的選單中的功能。可以這樣做 右擊 選擇 標記 然後用滑鼠拖動要複製的內容,然後在合適的位置右擊 選擇 複製 索引 一 索引的原理 對要查詢的字段建立索引其實就是把該字段按照一定的方式排序 建...