对于任何DBMS,索引都是进行优化的最主要的因素。对于少量的数据,没有合适的索引影响不是很大,但是,当随着数据量的增加,性能会急剧下降。

如果对多列进行索引(组合索引),列的顺序非常重要,MySQL仅能对索引最左边的前缀进行有效的查找。例如:

假设存在组合索引(c1,c2),查询语句select * from t1 where c1=1 and c2=2能够使用该索引。查询语句select * from t1 where c1=1也能够使用该索引。但是,查询语句select * from t1 where c2=2不能够使用该索引,因为没有组合索引的引导列,即,要想使用c2列进行查找,必需出现c1等于某值。

举例说明:

创建两张表book(图书表)和bookclass(图书分类表)

select b.ISBN FROM book b where b.CATEGORY_ID = 1;

执行时间为:0.053s

使用explain来分析一下该SQL:

type = ALL Extra=Using where,全表查询没有使用索引。

explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。

ALL 对于每个来自于先前的表的行组合,进行完整的表扫描。如果表是第一个没标记const的表,这通常不好,并且通常在它情况下很差。通常可以增加更多的索引而不要使用ALL,使得行能基于前面的表中的常数值或列值被检索出。

创建组合索引:

create index index_isbn on book (CATEGORY_ID,ISBN) ;

再次执行SQL,发现时间缩短到0.009s

使用explain来分析一下该SQL:

type = ref,Extra = Using index 使用了索引查询。

ref 对于每个来自于前面的表的行组合,所有有匹配索引值的行将从这张表中读取。如果联接只使用键的最左边的前缀,或如果键不是UNIQUE或PRIMARY KEY(换句话说,如果联接不能基于关键字选择单个行的话),则使用ref。如果使用的键仅仅匹配少量行,该联接类型是不错的。

到此这篇关于Mysql之组合索引方法详解的文章就介绍到这了,更多相关Mysql之组合索引内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

本文标题: Mysql之组合索引方法详解

本文地址: http://www.cppcns.com/shujuku/mysql/330396.html

组合索引mysql语句_Mysql之组合索引方法详解相关推荐

  1. mysql中设置字符集语句_MYSQL字符集设置的方法详解(终端的字符集)

    前言 每次利用终端 创建数据库或者创建表的时候,字符集都是latin1,或者进行插入值的时候,显示的是乱码(不指定字符集的时候)如下: 查看当前数据库的字符集 character_set_client ...

  2. jdbc mysql 自动重连_JDBC实现Mysql自动重连机制的方法详解

    JDBC是Java程序连接和访问各种数据库的API,它可以提供Java程序和各种数据库之间的连接服务,下面是爱站技术频道小编为大家带来的JDBC实现Mysql自动重连机制的方法详解. 日志:using ...

  3. java 查询sql语句_java执行SQL语句实现查询的通用方法详解

    完成sql查询 并将查询结果放入vector容器,以便其他程序使用 /* * 执行sql查询语句 */ public static vector executequery(class clazz, s ...

  4. mysql delete limit用法_mysql delete limit 使用方法详解

    mysql delete limit优点: 用于DELETE的MySQL唯一的LIMIT row_count选项用于告知服务器在控制命令被返回到客户端前被删除的行的最大值.本选项用于确保一个DELET ...

  5. c mysql 设置字符集_MYSQL字符集设置的方法详解(终端的字符集)

    前言 每次利用终端 创建数据库或者创建表的时候,字符集都是latin1,或者进行插入值的时候,显示的是乱码(不指定字符集的时候)如下: 查看当前数据库的字符集 character_set_client ...

  6. mysql主从_MySQL主从原理及配置详解

    MySQL主从配置及原理,供大家参考,具体内容如下 一.环境选择: 1.Centos 6.5 2.MySQL 5.7 二.什么是MySQL主从复制 MySQL主从复制是其最重要的功能之一.主从复制是指 ...

  7. mysql 堵塞_Mysql解决USE DB堵塞详解

    遇到故障,我们往往想的是如何解决这个故障,而不是从故障的根本去思考出现这个故障的原因?这样的结果,只能使我们得到了鱼,失去了渔.今天,我们就来分享一个由USE DB堵塞故障引发的思考案例. 故障描述 ...

  8. mysql游标_MySQL游标概念与用法详解

    本文实例讲述了MySQL游标概念与用法.分享给大家供大家参考,具体如下: 1.游标的概念(Cursor) 一条sql,对应N条资源,取出资源的接口,就是游标,沿着游标,可以一次取出1行.如果开发过安卓 ...

  9. mysql 遍历_MySQL 实现树的遍历详解及简单实现示例

    MySQL 实现树的遍历 经常在一个表中有父子关系的两个字段,比如empno与manager,这种结构中需要用到树的遍历.在Oracle 中可以使用connect by简单解决问题,但MySQL 5. ...

最新文章

  1. 清华大学唐杰老师组:自监督学习最新研究进展
  2. AI新方向:对抗攻击
  3. 【❤️算法系列之顺序二叉树的实现(前序遍历、中序遍历、后序遍历)❤️】
  4. Java 运行时数据区域
  5. 知道Google map上面街景怎么来的吗?-相当强大
  6. Oracle密码过期问题 ORA-28001:the password has expired
  7. Python 线程优先队列 PriorityQueue - Python零基础入门教程
  8. VelocityTracker使用
  9. 【一周头条盘点】中国软件网(2018.7.2~2018.7.6)
  10. flutter 报错 No MediaQuery widget ancestor found.
  11. twitter_关于Twitter和激进化的警告
  12. 「OceanBase 4.1 体验」|快速安装部署
  13. 此应用 DCloud APPID 非当前账号所有,请联系应用所有者(即此Appid的创建者)设置你的账号为协作者(在https://dev.dcloud.net.cn操作),或重新生成 APPID 后
  14. SpringBoot/Spring Cloud/Docker
  15. Linux就这个范儿 第13章 打通任督二脉
  16. Python简单几行代码实现黑客电影镜头屏幕画面
  17. 了解HTML标记语言
  18. 三种前端常用布局及其优缺点
  19. 【无标题】华为ict网络赛道练习题
  20. 7-51单片机ESP8266学习-AT指令(测试TCP服务器--51单片机程序配置8266,用手机TCP调试助手发信息给单片机控制小灯的亮灭)

热门文章

  1. 微分方程计算机仿真国内外研究论文,功率键合图法在血液循环系统计算机仿真中的应用,毕业论文...
  2. 96微信编辑器如何调整文章格式?
  3. 学习正则前的预备 charCodeAt
  4. 蓝桥杯大赛(大学B组)——2020省赛 跑步锻炼 (C语言)
  5. Qt 对 wav 音频文件进行剪切
  6. root的游戏修改器,手游root修改器
  7. python 接口(抽象) 多态,鸭子类型, 多继承原理(mro)
  8. word如何删除空行和全角空格_Word批量删除空格(全角空格、半角空格、不间断空格、制表符空格)的技巧-word技巧-电脑技巧收藏家...
  9. [C#][原创]aspose.word删除文档空行
  10. skyeye模拟uboot启动linux(initrd方式)