创建索引时需要注意什么?

创建索引时需要注意的主要因素有:

  1. 选择性选择性指的是字段中不重复值与总行数的比值。选择性越高,使用索引查询起来效率越高。因此,通常我们喜欢在高度选择性的列上创建索引。

  2. 数据类型:较小的数据类型普遍来说在索引上性能更好,因为它们占用的空间更小。

  3. 索引维护成本:每当更改表中的数据(INSERT、UPDATE、DELETE)时,索引都需要被更新。对于大量的写入操作,索引的维护成本可能会变得非常高。

  4. 覆盖索引:如果一条查询语句的执行只需要访问索引,而不需要访问实际的行记录,那么这个查询就是一个“覆盖索引”查询,这样的查询执行效率最高。

例如, 假设有一个用户表,表中有性别字段,其取值只有 ‘M’, ‘F’。虽然性别字段在应用中可能经常被用作过滤条件,但是这个字段的选择性很差,只有两个可能的值,假设用户分布均匀,那么任何基于性别的索引的选择性都只有50%,MySQL可能不会使用这样的索引。相反,如果是用户ID这样的字段,每个ID都是唯一的,那么这个字段的选择性就是100%,使用它作为索引会非常高效。

发表评论

后才能评论