我们刚刚在另外一个tidb集群上部署了同样的数据,两个集群的流量现在基本一致,并做了测试进行了对比
执行同样的语句
SELECT
QUALITY_TYPE,
QUALITY_INDICATOR,
REGION,
COUNTRY AS Category,
sum(NUM_OF_PARTICIPANTS) AS Participants,
sum(NUM_OF_MINUTES) AS Minutes
FROM
Test
WHERE
1 = 1
AND DAY >= date_format(trim(‘2020-12-01’), ‘%Y-%m-%d’)
AND date_format(trim(‘2021-03-27’), ‘%Y-%m-%d’) >= DAY
AND HGSSITEID = ‘500073559’
AND CATEGORY = ‘ALL’
AND CATEGORY_VALUE = ‘ALL’
GROUP BY
QUALITY_TYPE,
QUALITY_INDICATOR,
REGION,
COUNTRY
ORDER BY
Participants,
Minutes DESC;
在老集群上要比新的集群慢主要体现在Coprocessor Executor Time上
看SQL,您是要查询指定日期段的数据,对于日期数据,我们的实践是定义成CHAR(8),可以省却timestamp类型的一堆麻烦,我们应用中定义的timestamp,一般仅仅用作显示用途,不会在这个字段上进行比较操作。
建议您把day>=? and day <=? 改为Between ,Mysql的手册说是这样更好,不知道TiDB是不是也这样。
还有是不是在Order by字段上有没有相应的索引?如果有可能,建议加上Limit限制返回的条数。