淘先锋技术网

首页 1 2 3 4 5 6 7

联合索引在MySQL是通过多个列的数据组合构成的,能够加快数据库查询速度,提高数据库的性能。


CREATE TABLE `user_info` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(20) NOT NULL,
  `age` int(11) DEFAULT NULL,
  `city` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_name_age_city` (`name`,`age`,`city`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

联合索引在MySQL的组织方式

以上代码创建了一个名为"user_info"的表,并建立了一个联合索引"idx_name_age_city",包含"name"、"age"和"city"三个字段。

在查询时,如果使用到了"WHERE"筛选条件中的"name"、"age"和"city"字段,查询速度就会比单独使用这三个字段查询的速度更快。


EXPLAIN SELECT * FROM user_info WHERE name='Tom' AND age=20 AND city='Beijing';

当执行上述查询语句时,会看到如下结果:


id  select_type  table      type    possible_keys       key               key_len  ref   rows   Extra
1   SIMPLE       user_info  ref     idx_name_age_city   idx_name_age_city  62       const  1      Using where

可以发现,解析器在执行查询时使用了"idx_name_age_city"联合索引,查询速度得到了提升。

在创建联合索引时,建议将经常用于查询的字段放在前面,这样会更利于提升查询速度。