索引的使用

当表有索引的时候,每个select语句都会先扫描索引,索引是有序存储的并且以搜索为目标进行了优化

如果没有加索引,那么每一句select语句都要随机地逐条扫描整个表

索引的另一个用途是快捷高效地在相关表之间做连接操作,在需要连接的列上使用索引可以显著提高性能

创建索引:alter table 表名 add index (列名)

如果查找的是以通配符开头select * from artist where name like '%Queen'则mysq不会使用索引,但可以这么查name like REVERSE('% Queen')

mysql不支持基于索引的函数,select * from artist where upper(name) = upper('Billy Joel') name列上加了索引,当在name列上使用函数的时候,mysql就不会使用name列上的索引

当知道数据确实是唯一的情况下,把索引定义为唯一索引是非常好的方式alter table artist drop index name,add unique index(name)

创建多列索引alter table 表名 add primary key 索引名字 (列名1,列名2...)

alter table album add index m1 (country_id,album_type_id)

多列索引最左边的列可以被当作单一列索引来使用,当这些多列被用于group by或order by时最左边的列也可以显著提高性能

where order by group by的条件可以拼索引

隐藏秘籍:

1.删除重复索引

name2中最左项last_name被包含在name1中,可将name1删掉

2.监控无效的索引

3.改进索引列

列类型的优化

1.IPv4定义为INT UNSIGNED只占4字节,通常定义为VARCHAR(15)平均占用12字节

2.MD5用CHAR(32)来存储。

其他优化:

Key_len:

原文地址:https://www.cnblogs.com/lonely-buffoon/p/5708599.html