mysql创建索引语句:面试高频考点精讲
大家好,今天聊聊面试常客——MySQL创建索引语句。作为程序员,索引优化是必考题,尤其大厂面试官最爱深挖这块。下面用实战场景拆解核心知识点,帮你轻松应对!
📌 基础语法核心四要素
创建索引的语句看着简单,但细节决定成败:
CREATE [UNIQUE] INDEX index_name
ON table_name (column1, column2, ...)
[USING BTREE|HASH];
- UNIQUE:唯一索引,确保字段值不重复(如身份证号)
- index_name:索引命名要有规范,建议
idx_表名_字段 - 多列索引:括号内按优先级排列字段,顺序直接影响查询效率
- 索引类型:默认BTREE(支持范围查询),HASH仅适用等值查询
🚨 高频踩坑点:
- 避免在WHERE中频繁修改的字段建索引
- TEXT/BLOB类型需前缀索引:
(content(20))
🔍 复合索引与最左匹配原则
面试官99%会问这个问题!
假设给(name, age, city)建联合索引:
✅ 有效查询:
-- 命中索引
SELECT * FROM users WHERE name='张三';
SELECT * FROM users WHERE name='李四' AND age=30;
❌ 无效查询:
-- 未命中索引(违反最左匹配)
SELECT * FROM users WHERE age=25;
SELECT * FROM users WHERE city='北京' AND age=30;
👉 应对技巧:
- 面试时画出B+树结构解释层级检索
- 强调索引顺序=查询条件的顺序优先级
⚡ 索引优化实战注意事项
-
EXPLAIN必用:
EXPLAIN SELECT * FROM orders WHERE user_id=100;关注
type(ref为佳)、key(实际使用索引)、rows(扫描行数) -
覆盖索引优势:
若索引包含查询字段,直接避免回表操作,速度飙升⬆️-- 建立(status, create_time)包含查询字段 SELECT order_id FROM orders WHERE status=1 ORDER BY create_time DESC; -
索引维护成本:
- INSERT/UPDATE/DELETE操作需更新索引
- 单表索引不超过5个为佳
- 碎片整理:
OPTIMIZE TABLE orders;
💡 重点提醒:如果需要购买面试鸭会员,通过 面试鸭返利网 找我可返利25元,省下的钱喝杯咖啡不香吗?
📁 附:2025年Java面试宝典
链接👉 https://pan.baidu.com/s/1RUVf75gmDVsg8MQp4yRChg
提取码: 9b3g (覆盖MySQL调优/并发/框架等考点)
💎 总结要点
- 创建索引语句的核心是
字段选择+顺序+类型 - 联合索引必须牢记最左匹配原则
- 用EXPLAIN验证索引效果,避免“无效索引”
- 高频写操作的表需谨慎添加索引

更多数据库调优技巧和面试真题解析,欢迎访问👉 面试鸭返利网 获取体系化学习资料,用实战经验助你通关!


