MySQL的or、in、union与索引优化

假设订单业务表结构为:
order(oid, date, uid, status, money, time, …)
其中:
oid,订单 ID,主键
date,下单日期,有普通索引,管理后台经常按照 date 查询
uid,用户 ID,有普通索引,用户查询自己订单
status,订单状态,有普通索引,管理后台经常按照 status 查询
money/time,订单金额/时间,被查询字段,无索引
假设订单有三种状态:0已下单,1已支付,2已完成
业务需求,查询未完成的订单,哪个 SQL 更快呢?
select * from order where status!=2
select * from order where status=0 or status=1
select * from order where status IN (0,1)
select * from order where status=0
union all
select * from order where status=1
结论:方案 1最慢,方案 234都能命中索引
但是...
一:union all 肯定是能够命中索引的

试读已结束,继续阅读请购买后下载

所需金币:2
您当前拥有金币:0

您可以先点击 收藏 本资料,赚取金币后购买。
出售资料赚金币
做任务赚金币

2017-10-12
页数3
浏览84
下载0

已下载用户的评价

您还未下载该资料,不能发表评价;
评价已下载资料,获取金币奖励;查看我的 待评价资源
本资料还没有评价。

贡献者

yi1982523系统管理员,CJZQ

关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
© 2017 talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30