MySQL索引規則
- 2019 年 10 月 6 日
- 筆記
InnoDB 底層存儲結構為B+樹, B樹的每個節點對應innodb的一個page,page大小是固定的,一般設為 16k。其中非葉子節點只有鍵值,葉子節點包含完成數據。

索引(Index)是幫助 MySQL 高效獲取數據的數據結構。但是索引的規則有哪些呢?
- 索引一定要命名規範,哪個庫哪個表哪幾個欄位哪種類型索引
- 選擇唯一性索引——唯一性索引的值是唯一的,可以更快速的通過該索引來確定某條記錄
- 為經常需要排序、分組和聯合操作的欄位建立索引
- 為常作為查詢條件的欄位建立索引
- 限制索引的數目:越多的索引,會使更新表變得很浪費時間。
- 盡量使用數據量少的索引,大欄位盡量不要使用索引,如果使用用MD5值
- 如果索引的值很長,那麼查詢的速度會受到影響
- 盡量使用前綴來索引-如果索引欄位的值很長,最好使用值的前綴來索引
- 刪除不再使用或者很少使用的索引
- 最左前綴匹配原則
- 盡量選擇區分度高的列作為索引區分度的公式是表示欄位不重複的比例
- 索引列不能參與計算,保持列「乾淨」:帶函數的查詢不參與索引
- 盡量的擴展索引,不要新建索引
- 盡量索引覆蓋,不要回表操作
- 如果是多個索引,指定索引提高查詢效率
索引固然可以提高查詢效率的,但是也有自己的局限性,數據搜索還是適合用ElasticSearch,但是mysql要做持久化,同步ES兩種方法:一種是ES的java API介面,另外一種是通過binlog日誌,你們是怎麼用的?
每周一句:他強由他強,清風拂山崗。他橫任他橫,明月照大江。直面自己的恐懼和焦慮,做一個內心強大的人!