SQL部分条件字段不命中索引

【 TiDB 使用环境】

生产环境

【概述】

2个类似的SQL,索引字段类型一致,索引类型一致,第一个SQL的2个条件字段都能命中索引,第二个SQL只有dt字段命中索引,不知道为什么crs_hotel_code字段不命中索引

字段类型都是varchar(32), 索引类型都是NORMAL-BTREE

EXPLAIN SELECT dt, (applet_roomnight + fliggy_roomnight) AS room_night
  FROM qz_dw.topic_crs_order_split_hotel_label_dt
 WHERE dt <= date_format('2021-07-16', '%Y%m%d')
   AND dt >= date_format('2021-05-21', '%Y%m%d')
   AND hotel_code = '0'

EXPLAIN SELECT dt, room_num
  FROM qz_dw.fact_crm_unvrsl_hotel_contract_dt
 WHERE crs_hotel_code = '0'
	 AND dt <= date_format('2021-07-16', '%Y%m%d')
   AND dt >= date_format('2021-05-21', '%Y%m%d')


image

【TiDB 版本】
5.7.25-TiDB-v4.0.8

1 个赞

1.重新收集统计信息 2.第二个sql把条件顺序改成和第一个一样看看

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。