千家信息网

MySQL索引的使用策略及优化有哪些

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,本篇内容介绍了"MySQL索引的使用策略及优化有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!五
千家信息网最后更新 2026年11月01日MySQL索引的使用策略及优化有哪些

本篇内容介绍了"MySQL索引的使用策略及优化有哪些"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

五、索引的使用策略

什么时候要使用索引?

  • 主键自动建立唯一索引;

  • 经常作为查询条件在WHERE或者ORDER BY 语句中出现的列要建立索引;

  • 作为排序的列要建立索引;

  • 查询中与其他表关联的字段,外键关系建立索引

  • 高并发条件下倾向组合索引;

  • 用于聚合函数的列可以建立索引,例如使用了max(column_1)或者count(column_1)时的column_1就需要建立索引

什么时候不要使用索引?

  • 经常增删改的列不要建立索引;

  • 有大量重复的列不建立索引;

  • 表记录太少不要建立索引。只有当数据库里已经有了足够多的测试数据时,它的性能测试结果才有实际参考价值。如果在测试数据库里只有几百条数据记录,它们往往在执行完第一条查询命令之后就被全部加载到内存里,这将使后续的查询命令都执行得非常快--不管有没有使用索引。只有当数据库里的记录超过了1000条、数据总量也超过了MySQL服务器上的内存总量时,数据库的性能测试结果才有意义。

索引失效的情况:

  • 在组合索引中不能有列的值为NULL,如果有,那么这一列对组合索引就是无效的。

  • 在一个SELECT语句中,索引只能使用一次,如果在WHERE中使用了,那么在ORDER BY中就不要用了。

  • LIKE操作中,'%aaa%'不会使用索引,也就是索引会失效,但是'aaa%'可以使用索引。

  • 在索引的列上使用表达式或者函数会使索引失效,例如:select * from users where YEAR(adddate)<2007,将在每个行上进行运算,这将导致索引失效而进行全表扫描,因此我们可以改成:select * from users where adddate<'2007-01-01′。其它通配符同样,也就是说,在查询条件中使用正则表达式时,只有在搜索模板的第一个字符不是通配符的情况下才能使用索引。

  • 在查询条件中使用不等于,包括<符号、>符号和!=会导致索引失效。特别的是如果对主键索引使用!=则不会使索引失效,如果对主键索引或者整数类型的索引使用<符号或者>符号不会使索引失效。(经erwkjrfhjwkdb同学提醒,不等于,包括<符号、>符号和!,如果占总记录的比例很小的话,也不会失效)

  • 在查询条件中使用IS NULL或者IS NOT NULL会导致索引失效。

  • 字符串不加单引号会导致索引失效。更准确的说是类型不一致会导致失效,比如字段email是字符串类型的,使用WHERE email=99999 则会导致失败,应该改为WHERE email='99999'。

  • 在查询条件中使用OR连接多个条件会导致索引失效,除非OR链接的每个条件都加上索引,这时应该改为两次查询,然后用UNION ALL连接起来。

  • 如果排序的字段使用了索引,那么select的字段也要是索引字段,否则索引失效。特别的是如果排序的是主键索引则select * 也不会导致索引失效。

  • 尽量不要包括多列排序,如果一定要,最好为这队列构建组合索引;

六、索引的优化

1、最左前缀

索引的最左前缀和和B+Tree中的"最左前缀原理"有关,举例来说就是如果设置了组合索引那么以下3中情况可以使用索引:col1,,,其它的列,比如,,col2,col3等等都是不能使用索引的。

根据最左前缀原则,我们一般把排序分组频率最高的列放在最左边,以此类推。

2、带索引的模糊查询优化

在上面已经提到,使用LIKE进行模糊查询的时候,'%aaa%'不会使用索引,也就是索引会失效。如果是这种情况,只能使用全文索引来进行优化(上文有讲到)。

3、为检索的条件构建全文索引,然后使用

SELECT * FROM tablename MATCH(index_colum) ANGAINST('word');

4、使用短索引

对串列进行索引,如果可能应该指定一个前缀长度。例如,如果有一个CHAR(255)的 列,如果在前10 个或20 个字符内,多数值是惟一的,那么就不要对整个列进行索引。短索引不仅可以提高查询速度而且可以节省磁盘空间和I/O操作。

"MySQL索引的使用策略及优化有哪些"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

索引 查询 条件 数据 前缀 字段 情况 排序 组合 只有 字符 数据库 测试 策略 也就是 时候 符号 类型 全文 内存 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网与科技 互联网与科技金融数据 上海互联网科技有限公司 中国互联网科技发展 唐信互联网科技 广州宏创互联网科技 凡科互联网科技 深圳齐家互联网科技 腾讯科技 互联网女皇 深圳天众互联网科技公司 互联网科技创新企业排名 蓝色互联网科技 互联网科技热点资讯 宁夏众和广鑫互联网科技有限公司 中国互联网公司排名锤子科技 互联网营销推广黑科技 互联网科技包装股份有限公司上市 长沙渺峰互联网科技有限公司 安徽九吞吴互联网科技有限公司 互联网科技自媒体灵感 深圳市人人互联网科技有限公司 互联网和科技创新 涨乐互联网科技 老年人脱离互联网科技的作文 互联网科技商业 哈尔滨屹滨互联网科技有限公司 半导体是互联网高科技吗 九思连强互联网电子科技有限公司 数字互联网科技有限公司 瑞安市蟠桃会互联网科技有限公司
0