MST

星途 面试题库

面试题:MySQL多列索引构建基础

假设你有一个名为`employees`的表,包含`first_name`、`last_name`、`hire_date`和`sales_amount`字段。现在要构建一个多列索引以优化查询,查询条件经常是`first_name`和`hire_date`,请写出创建该多列索引的SQL语句,并解释索引字段顺序的影响。
19.5万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
  1. 创建多列索引的SQL语句
    CREATE INDEX idx_employees_first_name_hire_date ON employees (first_name, hire_date);
    
  2. 索引字段顺序的影响
    • 索引的最左前缀原则:在查询中,如果使用了索引的最左前缀字段,索引就能有效发挥作用。在这个例子中,first_name是最左前缀字段。如果查询条件是WHERE first_name = 'John' AND hire_date > '2020 - 01 - 01',索引会有效利用first_namehire_date字段进行快速查找。
    • 若查询条件仅为WHERE hire_date > '2020 - 01 - 01',由于没有最左前缀字段first_name,该索引不会被使用,查询性能可能不会提升。所以将经常在查询条件中最先出现的字段放在索引的最前面(这里是first_name),可以最大化索引的使用效率,提高查询性能。