关于mysql联合索引
|
1
2
3
4
5
6
7
|
CREATE TABLE `uniontest` ( `id` int(11) NOT NULL AUTO_INCREMENT, `menuname` varchar(50) DEFAULT NULL, `url` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`), UNIQUE KEY `u_index` (`menuname`,`url`)) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 |
先建立数据库,把menuname和url设置为联合索引
需要注意的几点:
1、在插入数据的时候Mysql 对menuname和url两列同时做了检查唯一性
如:
INSERT INTO uniontest(`menuname`,`url`) VALUES('订单管理','aaa.php') 成功
INSERT INTO uniontest(`menuname`,`url`) VALUES('订单管理','bbb.php') 成功
INSERT INTO uniontest(`menuname`,`url`) VALUES('订单管理2','aaa.php') 成功
INSERT INTO uniontest(`menuname`,`url`) VALUES('订单管理','aaa.php') 失败
2、在查询的时候
explain SELECT * FROM uniontest WHERE menuname = '订单管理' 用到索引
explain SELECT * FROM uniontest WHERE menuname = '订单管理' AND url = 'aaa.php'; 用到索引
explain SELECT * FROM uniontest WHERE url = 'aaa.php'; 没有用到索引
遵循了联合索引最左优先的原则。
关于mysql联合索引的更多相关文章
- MySQL 联合索引详解
MySQL 联合索引详解 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c ...
- mysql 联合索引(转)
http://blog.csdn.net/lmh12506/article/details/8879916 mysql 联合索引详解 联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中 ...
- SQL Server中的联合主键、聚集索引、非聚集索引、mysql 联合索引
我们都知道在一个表中当需要2列以上才能确定记录的唯一性的时候,就需要用到联合主键,当建立联合主键以后,在查询数据的时候性能就会有很大的提升,不过并不是对联合主键的任何列单独查询的时候性能都会提升,但我 ...
- MySQL联合索引VS单列索引
MySQL联合索引VS单列索引 以一个一千万数据量的表格为例 1. 建表建索引 USE foo; DROP TABLE IF EXISTS tmp; CREATE TABLE tmp ( id INT ...
- MySQL联合索引最左匹配范例
MySQL联合索引最左匹配范例 参考文章:http://blog.jobbole.com/24006/ 创建示例表. 示例表来自MySQL官方文档: https://dev.mysql.com/doc ...
- [转]mysql联合索引
mysql联合索引 命名规则:表名_字段名1.需要加索引的字段,要在where条件中2.数据量少的字段不需要加索引3.如果where条件中是OR关系,加索引不起作用4.符合最左原则 https:/ ...
- 我说MySQL联合索引遵循最左前缀匹配原则,面试官让我回去等通知
面试官: 我看你的简历上写着精通MySQL,问你个简单的问题,MySQL联合索引有什么特性? 心想,这还不简单,这不是问到我手心里了吗? 听我给你背一遍八股文! 我: MySQL联合索引遵循最左前缀匹 ...
- 三道MySQL联合索引面试题,淘汰80%的面试者,你能答对几道
众所周知MySQL联合索引遵循最左前缀匹配原则,在少数情况下也会不遵循(有兴趣,可以翻一下上篇文章). 创建联合索引的时候,建议优先把区分度高的字段放在第一列. 至于怎么统计区分度,可以按照下面这种方 ...
- mysql联合索引详解
联合索引又叫复合索引.对于复合索引:Mysql从左到右的使用索引中的字段,一个查询可以只使用索 引中的一部份,但只能是最左侧部分.例如索引是key index (a,b,c). 可以支持a | a,b ...
- mysql联合索引
命名规则:表名_字段名1.需要加索引的字段,要在where条件中2.数据量少的字段不需要加索引3.如果where条件中是OR关系,加索引不起作用4.符合最左原则 https://segmentfaul ...
随机推荐
- 2017.11.21 postgre更新时需要联合其他表的信息
现在需要更新t_user表,但是前台传来的参数 tenant_name 并不在这个表中,需要联合另一个表t_tenant. 要注意的一点是:set后面的字段不要写成 u.fd_validity,否则会 ...
- Rails时间扩展方法
1.时间扩展方法: beginning_of_day,end_of_day等等 Time.now.end_of_day 2.ruby类型判断 is_a?(类型) 如:b.is_a?(Array)
- valgrind的callgrind工具进行多线程性能分析
1.http://valgrind.org/downloads/old.html 2.yum install valgrind Valgrind的主要作者Julian Seward刚获得了今年的Goo ...
- 《深入理解jvm》笔记---第七章
虚拟机类载入机制 1. 类的生命周期: 载入.验证.准备.解析.初始化.使用.卸载七个阶段.当中验证.准备.解析三个阶段统称为连接. 当中,解析的阶段的时机并不一定. 2. Java类载入的时机: J ...
- 【DB2】NOT IN使用中的大坑
1.环境准备 ------建表TB DROP TABLE TB; CREATE TABLE TB ( ID INTEGER, LEVEL_DETAIL ) ); INSERT INTO TB (ID, ...
- ingress高可用--使用DaemonSet方式部署ingress-nginx
前言 为了配置kubernetes中的ingress的高可用,对于kubernetes集群以外只暴露一个访问入口,需要使用keepalived排除单点问题.需要使用daemonset方式将ingres ...
- datagridview 日期列排序
1.datagridview 日期列排序 private void Form1_Load(object sender, EventArgs e) { //方法1 dataGridView1.Colum ...
- 第四天 ThinkPHP手把手高速拼接站点(四)
6月6日,晴天."熟梅天气豆生蛾.一见榴花感慨多. 芒种积阴凝雨润,菖蒲修剪莫蹉跎. " 九.后台编写-续-1 1.改动admin/Tpl/Login/index.html 自己改 ...
- 小程序排错(redis导致)
小程序突然出问题,题库加载不了,程序正常,测试环境同样环境,同样代码都正常,但是线上数据秒过期,怀疑redis过期时间设置有问题,但是检查配置没问题,写入数据带过期时间也正常. redis设置key: ...
- Xamarin for VS 3.11.1594 Stable版免费完整破解补丁
Xamarin for VS 3.11.1594 Stable版免费完整破解补丁 此版本只能用于3.11.1594版本破解, 其他版本可能会有错误. Android和IOS完整支持,不像某些破解只支持 ...