MySQL 索引優化篇 4 索引的維護

2021-10-02 12:13:19 字數 2672 閱讀 3866

帶你搞定mysql實戰,輕鬆對應海量業務處理及高併發需求,從容應對大場面試

如果英文不好的話,可以參考 searchdoc 翻譯的中文版本

舉個例子 ,對id 建立了多個索引 ,重複索引

primary

key(id) 【主鍵索引】,

unique

key(id) 【唯一索引】,

index

(id)【普通索引】

主鍵上mysql會自動建立索引的,所以就麼有必要再對主鍵建立 唯一索引,更沒有必要建立普通索引了。

舉個例子

index(a) , index(a,b)在a上建立普通索引 , 在a 、b 建立了聯合索引。

這種情況是冗餘的, 只需要儲存 那個聯合索引中就行了,刪除 對a 單獨建立的普通索引即可。

因為 a 都在左側, 所以 查詢a, 也是可以走那個聯合索引的。

primary

key(id)

,index

(a, id)

這種情況是冗餘的,因為innodb中對於二級索引會自動增加 主鍵索引,所以 也是沒必要對a 和 主鍵id 建立聯合索引的。

利用第三方外掛程式 pt-duplicate-key-checker 。

pt-duplicate-key-checker是percona-toolkit中乙個工具,它可以檢測表中重複的索引或者主鍵,這款工具可以幫助我們找到重複的索引並給出建議。

安裝

[root@artisan ~]

位於 : /usr/bin/pt-duplicate-key-checker

用法

[root@artisan~]

# pt-duplicate-key-checker --host=192.168.18.131 --user='root' --password='artisan' --databases=artisan

更多用法pt-duplicate-key-checker --help

索引在使用的過程中 會產生碎片 , 表也在使用的過程中會產生碎片

檢視 某個表的 碎片程度

select

row_format,

table_rows,

data_length,

index_length,

max_data_length,

data_free,

engine

from

information_schema.

`tables

`where

table_schema =

'sakila'

and table_name =

'actor'

limit

1;

整理

optimize

table table_name

這個地方需要注意,閒時操作。 使用不當會導致鎖表

mysql優化 索引降維

索引降維 我們mysql優化,一般採用建立索引的方式,來提高查詢的速度,怎麼在使用索引的情況下更高效的,充分的使用索引,追求極致,提高自己的查詢速度。都知道在where子句中不要使用一些計算之類的語句,避免索引的失效。什麼是降維?一級級的篩選,一層層的過濾。業務要求查詢某乙個人的記錄,如何查高效。遊...

Mysql優化4 合適的索引

1 新增 1.1 主鍵索引新增 把一張表的乙個字段設定為主鍵 該欄位就位主鍵索引 id int unsigned primary key auto increment unsigned 有符號和無符號的區別 在mysql中整型範圍 型別 大小 範圍 有符號 範圍 無符號 用途 tinyint 1 位...

mysql 優化(4)索引覆蓋和最優索引

索引覆蓋 很重要的 乙個概念 就是在索引上查詢!如果查詢的列恰好是索引的一部分,那麼查詢只需要在索引檔案上進行 不需要回行到磁碟再找資料.這種查詢速度非常快,稱為 索引覆蓋 非聚促索引 索引檔案對應了資料要回行 浪費掉了時間 索引和資料區別 索引是高效組織起來的樹 節點 查詢樹葉 結構更優於資料 索...