MST

星途 面试题库

面试题:MySQL索引优化:中等难度之索引选择

在一个包含用户表(user),有字段id(主键自增)、name(varchar类型)、age(int类型)、email(varchar类型)的表中,若经常需要根据name和age联合查询用户信息,应如何创建索引以优化查询性能?请写出具体的SQL语句,并简要说明这样创建的原因。
25.7万 热度难度
数据库MySQL

知识考点

AI 面试

面试题答案

一键面试
  1. SQL语句
    CREATE INDEX idx_name_age ON user (name, age);
    
  2. 原因
    • 当经常根据nameage联合查询用户信息时,创建复合索引idx_name_age。复合索引的最左前缀原则会使得在查询时,如果查询条件是nameage联合,数据库可以直接利用该索引快速定位到符合条件的记录,减少全表扫描的开销,从而优化查询性能。例如执行SELECT * FROM user WHERE name = '某姓名' AND age = 20;这样的查询,索引就可以发挥作用。