前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL 06 - 索引优化

SQL 06 - 索引优化

作者头像
Reck Zhang
发布2021-08-11 12:00:30
2560
发布2021-08-11 12:00:30
举报
文章被收录于专栏:Reck Zhang

索引优化

独立的列

在进行查询的时候, 索引列不能是表达式的一部分, 也不能是函数的参数, 否则无法使用索引.

例如下面的查询不能使用actor_id列的索引:

代码语言:javascript
复制
SELECT actor_id from sakila.actor WHERE actor_id + 1 = 5;

多列索引

在需要使用多个列作为条件进行查询时, 使用多列索引比使用多个单列索引性能更好. 例如:

代码语言:javascript
复制
SELECT file_id, actor_id FROM sakila.film_actor WHERE actor_id = 1 AND file_id = 1;

索引列的顺序

让选择性最强的索引放在前面, 索引的选择性是指: 不重复的索引值和记录总数的比值. 选择性越高, 查询效率越高.

前缀索引

对于BLOB, TEXT和VARCHAR类型的列, 必须使用前缀索引, 只索引开始的部分字符.

对于前缀长度的选取需要根据索引选择性来确定.

覆盖索引

索引包含所有需要查询的字段的值.

具有以下优点:

  1. 索引通常远小于数据行的大小, 只读索引能大大减少数据访问量.
  2. 一些存储引擎(例如MyISAM)在内存中只存缓存索引, 而数据库依赖于操作系统来缓存. 因此, 只访问索引可以不使用系统调用.
  3. 对于InnoDB引擎, 若辅助索引能够覆盖查询, 则无需访问主索引.
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-08-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 索引优化
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档