Bug 反馈
我有一个表如下数据又72w多条,在使用查询语句时如果where条件字段没有索引将会大大降低查询效率。(200ms-800ms) 详细信息如下(已经脱敏处理)
建表语句
DROP TABLE IF EXISTS `t_collect_record_1659571200`;
CREATE TABLE `t_collect_record_1659571200` (
`id` bigint(20) NOT NULL /*T![auto_rand] AUTO_RANDOM(5) */,
`uid` varchar(64) NOT NULL ,
`src` int(8) NOT NULL ,
`collect_time` bigint(20) NOT NULL ,
PRIMARY KEY (`id`) /*T![clustered_index] CLUSTERED */,
KEY `uid_ctime_id` (`uid`,`collect_time`,`id`) COMMENT 'uid_ctime_id'
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin /*T![auto_rand_base] AUTO_RANDOM_BASE=780001 */;
查询语句
SELECT
`id`,
`src`,
`collect_time`
FROM
`t_collect_record_1659571200`
WHERE
`uid` = "11100000018"
AND `collect_time` <= 1660800000
AND `collect_time` >= 1659579000
AND IF (0=10,TRUE,id > 10)
AND IF (0=1,TRUE,src = 1) # 这里条件成立则慢查询
LIMIT
30;
执行过程对比 (修改了时间以规避缓存)
为保证格式已经上传到github
【 TiDB 版本】
v5.4.2
【 Bug 的影响】
查询耗时加大
【可能的问题复现步骤】
- 执行建表语句
2.写入70w左右数据 - 执行查询语句即可
【看到的非预期行为】
1.当第二个IF条件成立查询的耗时为800ms 否则只有200ms
【期望看到的行为】 - 查询耗时200ms左右
【相关组件及具体版本】
【其他背景信息或者截图】
需要环境可以联系QQ: 2029229189


