mysql in查询语句_sql where in 子查询

mysql in查询语句_sql where in 子查询经常在网上看到 “IN” 子句用不到索引,或者 “IN” 后面的字段用不到索引,这里做个简单的测试。 步骤如下: 一、准备资料 1.表定义 商品表:t_order ID 商家ID(int) 店铺ID…

Mysql 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

    image-20200528163709670

  • 结论

    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

    image-20200528172801592

  • 结论

    IN后面的时间范围可以用到索引

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/8164.html

(0)
上一篇 2023-03-06
下一篇 2023-03-06

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注