mysql优化学习_day2

创建高性能的索引

索引

索引也称为键(key)

基本功能是用于快速找到记录,是一种数据结构

好的索引能够有效提高新能,但是差的索引会使性能急剧下降

索引的优点:

    大大减少服务器需要扫描的数据量

    帮助服务器避免排序和临时表

    将随机IO变成顺序IO

索引不一定是最好的解决方案

    当表比较小的时候全表扫描更高效

    当表相对大的时候,索引是一种比较好的选择

    当表非常大的时候,索引的资源消耗也会变大,所以分区之类的技能可能更好

 

索引类型

mysql支持索引类型

B-Tree索引(默认)

    B-Tree索引因为是顺序存储数据,所以可以用来进行分组排序

哈希索引(Memory)

R-Tree空间数据索引

全文索引

其他

高性能的索引策略

独立的列

索引列不能作为表达式的一部分

where id - 1 = 2这种方式不会使用索引

where id = 3 这种方式才会使用索引

前缀索引

添加索引:alter table 表名 add key (字段(n))

删除索引:alter table user drop index email;

*前缀索引无法分组排序以及覆盖扫描

位数选择:下面两个值最接近的时候的n

count(distinct 字段名) from 表名

count(distinct left(字段名,n)) from 表名

多列索引(复合索引)

alter table 表名 add index (name,age);

复合索引的第一个索引字段为主索引字段,查询想要使用复合索引的话必须包含第一个索引字段

选择合适的索引列顺序

把选择性大的索引放在前面(以次索引为条件对应查出来的数据更少)

如果匹配到的数据都很多,那么一般依赖经验进行设置

 

索引排序的注意点

order by 后面的字段需要是表的最左前列(按顺序)

如果where提供了了一个满足最左前列的常量,order by可以使用紧接的字段

不要同时使用两个方向的排序

不要使用范围查询

mysql如果对一个索引进行了范围检索,就无法再使用另一个索引或者该索引的后续字段进行排序

 



 

 

 

 

 

 









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值