mysql 高性能索引策略

本文探讨了如何在MySQL中创建和使用高效索引以提升数据库性能。关键点包括:隔离使用索引列,避免在表达式中使用索引;合理设置前缀索引以优化长字段索引;理解聚集索引特性;避免多余的或重复的索引;以及在扩展索引和新增索引间的权衡。
摘要由CSDN通过智能技术生成

在mysql数据库中,正确的创建索引并且恰当的使用索引,是提高性能的很重要的方面,下面介绍一下如何有效并且高效的使用索引

1.隔离的使用列

在mysql中如果没有隔离创建的索引的列,则建立的所以不会起作用。“隔离”的含义是:他不是表达式的一部分,也没有位于函数中,例如下面的索引就不会起作用

select * from people where id + 1 = 3;这种情况下id是索引咧也不会起到索引的作用,放在表达式中也是一样。

2.前缀索引和索引选择性

有的时候如果需要索引很长的字符咧,就会使得索引变大并且变慢,因此如果索引BLOB和TEXT列,或者非常长的VACHAR列,就必须定义索引前缀,因为mysql不会允许索引他们的全文,但是如何选择合适的前缀的长度呢?计算选择率,一般的前缀的选择率能接近0.31,基本上就可以了:

select count(distinct left(city,7))/count(*) as sel from city_demo;(其中的city为索引列)

找到了合适的前缀长度之后,如何创建前缀索引呢?alter table city_demo add KEY(city(7))

注意:mysql不能在ORDER BY或者GROUP BY查询中使用前缀索引

3.聚集索引

一般只有solidDB和InnoDB支持聚集索引

4.避免多余索引和重复索引

一般的mysql会给主键或者UNIQUE约束默认加上索引,不需要再创建索引了。

重复索引则是,如果创建了(A,B)的索引,则再不需要创建的A的索引了,mysql支持最左前缀索引

向有更多索引的表中插入新行会慢的多。这通常是正确的:添加新索引可能会对INSERT,UPDATE,DELETE有较大的性能影响,尤其是新索引遇到内存限制的时候

5.在任何可能的地方,都要试着扩展索引,而不是新增索引。通常维护一个多列索引比维护多个单列索引容易的多。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值