• 主页

  • 投资

  • IT

    🔥
  • 设计

  • 销售

  • 共99篇

    mysql数据库

关闭

返回栏目

关闭

返回mysql数据库栏目

83 - 表 - 列 - 索引(index) - 联合索引操作

作者:

贺及楼

成为作者

更新日期:2023-12-20 09:39:55

表 - 列 - 索引(index) - 联合索引操作

联合索引

  1. CREATE TABLE `user` (
  2. `id` int NOT NULL AUTO_INCREMENT,
  3. `age` int DEFAULT '0',
  4. `name` varchar(30) COLLATE utf8mb4_bin DEFAULT NULL,
  5. `info` varchar(20) COLLATE utf8mb4_bin DEFAULT NULL,
  6. PRIMARY KEY (`id`),
  7. KEY `idx_code_age_name` (`age`,`name`,`info`,),
  8. ) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin
  1. # 增加联合索引,需要关注创建顺序
  2. ALTER TABLE table_name ADD INDEX idx_name (column1, column2);

最左原则

只要最左边的 age 用到就可以启用索引

sql 是否使用到索引 解释
explain select * from user where age=21; 用到了 第一个用了第一个age
explain select * from user where age=21 and name='小明' 用到了 第一个用了第一个age
explain select * from user where age=21 and name='小明' and info='101'; 用到了 第一个用了第一个age
explain select * from user where age=21 and info='101'; 用到了 第一个用了第一个age
explain select * from user where name='小明'; 失效了 第一个没用了第一个age
explain select * from user where info='101'; 失效了 第一个没用了第一个age
explain select * from user where name='小明' and info='101'; 失效了 第一个没用了第一个age