mysql 重复率高字段 索引_MySQL性能优化(二)索引优化
一、選擇合適的列建立索引
1.在where從句,group by從句,order by從句,on從句中出現的列(select)
2.索引字段越小越好(表每頁數據才會更多,IO效率會更高)
3.離散度大的列放到聯合索引的前面
select * from payment where staff_id=2 and customer_id=584;
index(staff_id,customer_id)好?還是index(customer_id,staff_id)好?
由于customer_id的離散度更大(重復率小,可選擇性更大),所以應該使用index(customer_id,staff_id)
二、索引維護
冗余索引是指多個索引的前綴列相同,或是在聯合索引中包含了主鍵的索引。如下:key(name,id)就是一個冗余索引
create table test(
id int not null primary key,
name varchar(10) not null,
key(name,id)
)engine=innodb;
//可以刪除冗余索引,達到優化效果。
使用pt-duplicate-key-checker工具檢查重復及冗余索引
pt-duplicate-key-checker \
-uroot \
-p '' \
-h 127.0.0.1
刪除不用索引
目前mysql中還沒有記錄索引的使用情況,但是在PerconMySQL和MariaDB中可通過INDEX_STATISTICS表來查看哪些索引未使用,
但在mysql中目前只能通過慢查日志配合pt-index-usage工具來進行索引使用情況分析。
pt-index-usage \
-uroot -p'' \
mysql-slow.log
總結
以上是生活随笔為你收集整理的mysql 重复率高字段 索引_MySQL性能优化(二)索引优化的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 8.0 创建函数_MySQL
- 下一篇: 格力与小米的10亿赌局 第四季度财报见分