大家好,我是考100分的小小码 ,祝大家学习进步,加薪顺利呀。今天说一说mysql in查询语句_sql where in 子查询,希望您对编程的造诣更进一步.
经常在网上看到 “IN” 子句用不到索引,或者 “IN” 后面的字段用不到索引,这里做个简单的测试。
步骤如下:
一、准备资料
1.表定义
商品表:t_order
ID | 商家ID(int) | 店铺ID(int) | 编码 | 名称 | 创建时间(datetime) |
---|---|---|---|---|---|
id | merchant_id | shop_id | code | name | create_time |
索引:商家ID + 店铺ID + 创建时间
2.预置数据
方式:商家ID,店铺ID,创建时间 均匀分配预制数据,具体sql省略
二、测试
1.场景一
-
SQL
SELECT * FROM t_order WHERE merchant_id = 136 AND shop_id IN ( 581, 583 );
代码100分
EXPLAIN
- type为range,key_len为8个字节,扫描行 = 12
-
结论
IN可以用到range索引
2.场景二
-
SQL
代码100分
SELECT * FROM riv_outbound_notice_h t_order WHERE t_order.ONH_ORG_ID = 136 AND t_order.ONH_OWNER_ID IN ( 581, 583 ) AND t_order.CREATE_TIME BETWEEN "2019-11-19 00:00:00" AND "2019-11-22 00:00:00";
-
EXPLAIN
- type = range,key_len = 13,扫描行 = 5
-
结论
IN后面的时间范围可以用到索引
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8164.html