mysql 重复率高字段 索引_MySQL的高性能索引策略

前言

首先,如果不是很理解索引的底层结构原理的话,建议先看一下我的另一篇介绍索引的底层原理。(点击跳转)

本篇文章是大部分摘入高性能MySQL的笔记,也有参考网上的各种博客整理。仅供大家学习和复习!

独立的列

独立的列是指索引不能参与运算,要将索引索引单独的放在表达式的一列。像下面的语句就不会用到索引。

mysql> SELECT actor_id FROM sakila.actor WHERE actor_id + 1 = 5;

我们可以很清楚的看出来,actor_id就是4,所以没必须要这样表达,而放弃了使用索引。或者将索引拿去参与其他的运算也是不行的,只有保证独立的列才可以走索引。

前缀索引和索引选择性

索引选择性

虽然建立索引有助于我们对数据库查询的优化,但是建立索引也不是必须的。像下面这些情况就不适合建立索引。

①表记录比较少(小于2000),不必建索引,直接全表扫描速度更快

②索引的选择性比较低,即字段中存在大量重复的值

所以我们对查询次数高且数据量比较大的表建立索引。而且还要选择重复率低的字段当作索引,索引的选择性越高则查询效率越高,因为选择性高的索引可以让MySQL在查找的时候过滤掉更多的行。像唯一索引的选择性是1,这是最好的索引选择性,性能也是最好的。

前缀索引

这里要提到,我们的索引是会占用的额外的存储空间的。所以如果索引特别长的话,那么维护索引将会占用非常大的空间。但其实一般情况下,某个列前缀的选择性也是足够高的。对于BLOB、TEXT或者很长的VARCHAR类型的列,就必须使用前缀索引,因为MySQL不允许这些列的完

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值