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不允许这些列的完

你可能感兴趣的:(mysql,重复率高字段,索引)