美文网首页
MySQL sql优化-组合索引理解

MySQL sql优化-组合索引理解

作者: 爱吃赵一鸣 | 来源:发表于2019-04-04 09:07 被阅读0次

由于mysql在执行查询计划中对于单个表的查询只会使用一个索引,但在系统使用中对于单表总是各种不同的条件组合查询,在建立索引的过程中要保证可用性和普遍性,单个表建多个单字段索引是浪费空间又达不到最好效果,推荐的是建立组合索引。组合索引,这样看上去索引个数比较精简,效果也是比较好的。

select * from t_bc_customer where fkcontrolunitid = '00d0ddd' limit 0,30 

对于这样的查询肯定是建索引fkcontrolunitid , alter table t_bc_customer  add index idx_cuid(fkcontrolunitid )

select * from t_bc_customer where fkcontrolunitid = '00d0ddd' and fcreatetime > '2019-01-01' limit 0,30 

对于这样的查询肯定是建索引fkcontrolunitid, fcreatetime , alter table t_bc_customer  add index idx_comp(fkcontrolunitid,fcreatetime )

组合索引的字段先后顺序十分关键,直接决定了sql在查询中是否能使用到该索引。

1.组合索引的字段先后顺序需要和查询sql中的查询字段出现顺序一致,否则可能只使用到了一部分索引。

如 select * from t_bc_customer where fkcontrolunitid = '00d0ddd' and fstatus = 'y' and fcreatetime > '2019-01-01' 

如果创建的索引是idx_comp(fkcontrolunitid,fcreatetime ) 则只会使用到fkcontrolunitid第一部分的索引

如果将sql改成  select * from t_bc_customer where fkcontrolunitid = '00d0ddd' and fcreatetime > '2019-01-01' and fstatus = 'y'  则可以使用到该索引的100%

2.排序字段也可以使用到索引,字段顺序排在前面查询字段的最后。

所以组合索引的建立对SQL的写法有个顺序的限制。由于在开发过程中对一个表有多种查询需求,字段的组合也是多种多样,如何保证索引的精简和有效性是需要根据具体业务需求规范表字段的查询顺序,一般按字段影响的范围从大到小排序 。否则每条sql都需要单独建个组合索引,这是很浪费空间的做法

相关文章

  • MySQL sql优化-组合索引理解

    由于mysql在执行查询计划中对于单个表的查询只会使用一个索引,但在系统使用中对于单表总是各种不同的条件组合查询,...

  • Mysql InnoDB索引原理

    Mysql InnoDB索引原理 理解Mysql索引的原理和数据结构有助于我们更好的使用索引以及进行SQL优化,索...

  • MySQL索引知多少

    mysql索引 总结关于mysql的索引,查询优化,SQL技巧等 1 索引类型 B-Tree索引 Hash索引 ...

  • mysql数据库优化

    1. Mysql优化介绍 1.1 sql优化 a. sql优化分析b. 索引优化c. 常用sql优化d. 常用优化...

  • 17.MySQL优化

    《高性能MySQL》——这本书都有的 “字段”优化总结 “索引”优化总结 索引的优化 “查询SQL”优化总结 “引...

  • Mysql索引

    提起优化 SQL,可能会把它理解为优化索引。简单来说这也不算错,索引在 SQL 优化中占了很大的比重。索引用得好,...

  • MySQL面试知识点追命连环问(三)锁机制、日志备份及分表策略

    上次我们讨论了MySQL的事务索引,SQL优化和处理器。 MySQL面试知识点追命连环问(二)事务、索引及SQL优...

  • sql优化的几种方法

    Mysql的优化,大体可以分为三部分:索引的优化,sql语句的优化,表的优化 1.索引的优化 只要列中含有NULL...

  • 千万级MySQL数据库建立索引,提高性能的秘诀

    实践中如何优化MySQL 实践中,MySQL的优化主要涉及SQL语句及索引的优化、数据表结构的优化、系统配置的优化...

  • Mysql查询优化

    mysql的优化思路: 日志、执行计划、索引、缓存(查询缓存和索引缓存)、SQL优化、分区、分表、分库、修改数据库...

网友评论

      本文标题:MySQL sql优化-组合索引理解

      本文链接:https://www.haomeiwen.com/subject/ubgzbqtx.html