mysql索引使用整理

2021-09-19 16:19:08 字數 1097 閱讀 7316

索引分為主鍵索引、普通索引、聯合索引、唯一索引、全文索引五種

索引優化:

1.索引欄位能用數字盡量用數字,因為數字使用的儲存空間更小

2.唯一索引與主鍵索引的區別在於主鍵不能為空

3.建立乙個(a,b,c)的聯合索引相當於建立了三個索引(a),(a,b),(a,b,c)

4.如果對於類似char(100)的索引,盡可能制定乙個字首長度

新增語法:alter table table_name add key(column_name(prefix_length));

在mysql中,字首長度最大值為255位元組。對於儲存引擎為myisam或innodb的資料表,字首最長為1000位元組。如果超過這個限制,建立索引就會報錯了 

可以通過計算選擇性來確定字首索引的選擇性,計算方法如下

全列選擇性:

select count(distinct column_name) / count(*) from table_name;

某一長度字首的選擇性

select count(distinct left(column_name, prefix_length)) / count(*) from table_name;

當字首的選擇性越接近全列選擇性的時候,索引效果越好(盡量保持字首索引選擇性/全列索引選擇性在(0.75--0.85)之間)

5.如果全列索引的選擇性太低,不建議使用索引

6.mysql查詢只使用乙個索引,因此如果where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。因此資料庫預設排序可以符合要求的情況下不要使用排序操作;盡量不要包含多個列的排序,如果需要最好給這些列建立復合索引。

7.對於索引列使用like的話必須使用「11%」 使用「%11」或者「%11%」是不走索引的(可以使用覆蓋索引優化)

8.不要在索引的列上使用函式或計算   id+1=4  mouth(date)=12   這樣是不走索引的

9.雜湊索引適用於重複率低的列值精確查詢,它的實質是對索引鍵值進行雜湊計算,查詢時根據雜湊碰撞查詢一次即可查到結果,b+樹索引是把索引資料存在b+樹上,使用二分查詢查詢的(聚集索引時b+樹的葉子節點存的是列值,非聚集索引存的是列值對應的儲存位置)

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是不起作用的,只能靠右擊彈出的選單中的功能。可以這樣做 右擊 選擇 標記 然後用滑鼠拖動要複製的內容,然後在合適的位置右擊 選擇 複製 索引 一 索引的原理 對要查詢的字段建立索引其實就是把該字段按照一定的方式排序 建...