关于mysql联合索引
Posted 张宇航
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于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联合索引的主要内容,如果未能解决你的问题,请参考以下文章