当前位置:Gxlcms > 数据库问题 > 关于mysql联合索引

关于mysql联合索引

时间:2021-07-01 10:21:17 帮助过:15人阅读

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联合索引

标签:innodb   ble   mysql   sql   exp   nod   charset   唯一性   xpl   

人气教程排行