文章预览
将 脚本之家 设为“ 星标 ⭐ ” 第一时间收到文章更新 来源 | 苏三说技术 (ID:susanSayJava) 前言 想象你是一家餐厅的服务员,面前有两个菜单: 菜单A :按菜品分类排列(前菜、主菜、甜点) 菜单B :按价格从低到高排列 当顾客说:"我要最便宜的川菜"。 你会: 先用菜单B找到所有低价菜 从中筛选川菜 或者: 先用菜单A找到所有川菜 再按价格排序 这就是MySQL优化器的日常决策 ! 明明是同一条SQL,有时候走的索引a,而有时候走的索引b,就是它的锅。 今天这篇文章跟大家一起聊聊,MySQL选错索引的问题,希望对你会有所帮助。 1 一个让程序员崩溃的案例 现在有个需求:查询今年开始已付款的前100个订单。 给status字段创建了索引idx_status。 给create_time字段创建了索引idx_create_time。 查询订单的sql如下: SELECT * FROM orders WHERE status = 'paid'
………………………………