mysql 索引建立標準 mysql索引規範

2021-10-18 21:03:46 字數 805 閱讀 9207

索引並不是越多越好!索引可以提高查詢效率,但會降低增刪改效率。但多了甚至會降低查詢效率。

innodb是按照主鍵索引的順序來組織表,如沒有建立主鍵,mysql會選擇第乙個非空唯一索引做為主鍵,或生成乙個佔6個位元組的主鍵,自動生成的主鍵效能並不是最好的,所以建立表時最好明確建立乙個主鍵:

1、不使用更新頻繁的列為主鍵,不使用聯合索引作為主鍵,否則會降低效能

2、不使用uuid,md5,hash,字串作為主鍵,無法保證資料自動增長

3、主鍵建議選擇使用自增id值

常見索引列建議:

select、update、delete語句的where從句中列建立索引

包含在order by 、group by、distinct中的字段

多標join的關聯列

復合索引列的順序:

區分度最高的列放在聯合索引的最左側

盡量把字段長度小的列放在聯合索引的最左側

使用頻繁的列放到聯合索引的左側

嚴格控制索引的數量,避免建立冗餘索引和重複索引,如:

冗餘索引,index(a,b,c),index(a,b),index(a)

重複索引,primary key(id),index(id),unique index(id)

對於頻繁的查詢優先考慮使用覆蓋索引,避免inonodb表進行索引的二次查詢,可以把隨機io變為順序io加快查詢效率

覆蓋索引:就是包含了所有查詢欄位的索引

盡量避免使用外來鍵約束,但一定在表與表之間的關聯鍵上建立索引

外來鍵可以用於保證資料的參照完整性,但建議在業務端實現

外來鍵會影響父表和子表的寫操作從而降低效能

mysq建立索引的優缺點

建立索引的優點及必要性 第一 通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性 第二 可以大大加快 資料的檢索速度,這也是建立索引的最主要的原因 第三 可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義 第四 在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中分組和...

mysq索引類別

索引都是在儲存引擎層面實現的 1.btree索引 使用b tree資料結構建立的索引,索引值都是按順序存放的,儲存引擎不需要再全表掃瞄,取而代之的是從索引的根節點開始掃瞄,根節點存放了子節點的指標,隨著向下層查詢,隨著查詢值和節點值的比較 指標中右節點葉值的上下限 最終找到記錄。btree索引可以選...

(索引)建立MySQL索引

建立索引的必要性 主鍵預設是建立索引的,而且具有唯一性 合適地建立索引後比不建立索引,提高了查詢速度 建立索引的語法 簡單索引 可以有重複資料 create index indexname on tablename column name 1舉例子說明如 建立乙個資料表,設定一些初始的資料,然後採用...