数据库 - MySql索引的合理使用及优化

索引可以帮助我们更快查询、排序。但在使用上要避免一些导致索引失效的情况,同时要合理的使用索引,毕竟索引也是有缺点的,建立不当也会导致查询更慢,维护困难。

  1. 索引列上不能使用表达式或函数
  2. 对字符串建立前缀索引(因为不同引擎对索引列的长度有限制,所以字符串太长无法建立索引或者索引查询效率很低)
CREATE INDEX INDEX_NAME ON table(col_name(n)) //n即为前缀长度

    3.注意前缀索引列的选择性 : 索引的选择性是不重复的索引值和表的记录数的比值。不要选择性太小。

        abcio,abeop,cedui,ceaop。 比较前缀索引宽度为2和为3的选择性。

    4.可以的话,建立合适的联合索引而不是给每一列都建立索引

    5.建立联合索引时:经常会被使用到的列放在最左边(最左匹配原则),选择性高的列优先,宽度小(长度)的列优先

    6.避免使用like查询以'%'开头

    7.避免使用select * ......进行查询。

    8.可以为所有要查询的列建立索引(覆盖索引(innodb)),默认的主键索引列可以直接使用。覆盖索引不需要回表,直接在索引中就可以查询到字段数据。

    9.避免使用in,not in,>,<等范围查找,特别是组合索引最左边的列。

    10.适当的为查询条件字段加索引,优化锁,避免加表级锁。

        select * from t_goods where status=1 for update;   //status如果建立了索引加行级锁,没有索引且不是主键加表级锁 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值