索引並不是越多越好!索引可以提高查詢效率,但會降低增刪改效率。但多了甚至會降低查詢效率。
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加快查詢效率
覆蓋索引:就是包含了所有查詢欄位的索引
盡量避免使用外來鍵約束,但一定在表與表之間的關聯鍵上建立索引
外來鍵可以用於保證資料的參照完整性,但建議在業務端實現
外來鍵會影響父表和子表的寫操作從而降低效能
mysql索引規範
摘要 主鍵索引名為 pk 欄位名 唯一索引名為 uk 欄位名 普通索引名則為 idx 欄位名 說明 pk 即 primary key uk 即 unique key 序號規範 說明例子 1 強制 業務上具有唯一特性的字段,即使是多個欄位的組合,也必須建成唯一索引。不要以為唯一索引影響了 insert...
mysql 索引建立標準 mysql索引規範
索引並不是越多越好!索引可以提高查詢效率,但會降低增刪改效率。但多了甚至會降低查詢效率。innodb是按照主鍵索引的順序來組織表,如沒有建立主鍵,mysql會選擇第乙個非空唯一索引做為主鍵,或生成乙個佔6個位元組的主鍵,自動生成的主鍵效能並不是最好的,所以建立表時最好明確建立乙個主鍵 1 不使用更新...
mysql 筆記 命名 索引規範
1 命名規範 所有資料庫物件名稱必須使用小寫字母並用下劃線分割 禁止使用mysql保留關鍵字 如果表名中包含關鍵字查詢時,需要將其有單引號括起來 見名識意,並且最後不要超過32個字元 臨時庫表以tmp 為字首並以日期為字尾,備份表以bak 為字首並以日期為字尾 所有儲存相同資料的列名和列型別必須一致...