【TiDB 使用环境】生产环境
【TiDB 版本】v7.5.7
【遇到的问题:问题现象及影响】
将集群从v5.3.3升级到v7.5.7后,子查询的SQL排序出现不一致。v5.3.3集群可以按照order by正常排序,而v7.5.7集群排序为乱序。
SQL
select id,order_no,sub_order_no,biz_type,biz_code,abs(sub_order_status) as sub_order_status,buyer_id,buyer_name,seller_id,pay_amount,discount_amount,create_time_us from trade_order_seller where id in ( select id from trade_order_seller where seller_id = 2627869160 and biz_type in ( "203" ) and create_time_us >= "2025-8-21" and create_time_us <= "2025-9-23" order by create_time_us desc limit 0, 10);
v5.3.3集群
查询结果可以根据create_time_us倒叙排列
执行计划
+-------------------------------------+---------+-----------+---------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | estRows | task | access object | operator info |
+-------------------------------------+---------+-----------+---------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Projection_16 | 0.04 | root | | dw_trade_order_seller_db.trade_order_seller.id, dw_trade_order_seller_db.trade_order_seller.order_no, dw_trade_order_seller_db.trade_order_seller.sub_order_no, dw_trade_order_seller_db.trade_order_seller.biz_type, dw_trade_order_seller_db.trade_order_seller.biz_code, abs(dw_trade_order_seller_db.trade_order_seller.sub_order_status)->Column#170, dw_trade_order_seller_db.trade_order_seller.buyer_id, dw_trade_order_seller_db.trade_order_seller.buyer_name, dw_trade_order_seller_db.trade_order_seller.seller_id, dw_trade_order_seller_db.trade_order_seller.pay_amount, dw_trade_order_seller_db.trade_order_seller.discount_amount, dw_trade_order_seller_db.trade_order_seller.create_time_us |
| └─IndexJoin_22 | 0.04 | root | | inner join, inner:TableReader_19, outer key:dw_trade_order_seller_db.trade_order_seller.id, inner key:dw_trade_order_seller_db.trade_order_seller.id, equal cond:eq(dw_trade_order_seller_db.trade_order_seller.id, dw_trade_order_seller_db.trade_order_seller.id) |
| ├─TopN_29(Build) | 0.04 | root | | dw_trade_order_seller_db.trade_order_seller.create_time_us:desc, offset:0, count:10 |
| │ └─IndexReader_37 | 0.04 | root | | index:TopN_36 |
| │ └─TopN_36 | 0.04 | cop[tikv] | | dw_trade_order_seller_db.trade_order_seller.create_time_us:desc, offset:0, count:10 |
| │ └─Selection_35 | 0.04 | cop[tikv] | | eq(dw_trade_order_seller_db.trade_order_seller.biz_type, "203"), ge(dw_trade_order_seller_db.trade_order_seller.create_time_us, 2025-08-21 00:00:00.000000), le(dw_trade_order_seller_db.trade_order_seller.create_time_us, 2025-09-23 00:00:00.000000) |
| │ └─IndexRangeScan_34 | 436.44 | cop[tikv] | table:trade_order_seller, index:idx_selid_status_type_ctimes(seller_id, sub_order_status, biz_type, create_time_us) | range:[2627869160,2627869160], keep order:false |
| └─TableReader_19(Probe) | 1.00 | root | | data:TableRangeScan_18 |
| └─TableRangeScan_18 | 1.00 | cop[tikv] | table:trade_order_seller | range: decided by [dw_trade_order_seller_db.trade_order_seller.id], keep order:false |
+-------------------------------------+---------+-----------+---------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
v7.5.7集群
查询结果为乱序
执行计划
+-------------------------------------+---------+-----------+---------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | estRows | task | access object | operator info |
+-------------------------------------+---------+-----------+---------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Projection_16 | 0.03 | root | | dw_trade_order_seller_db.trade_order_seller.id, dw_trade_order_seller_db.trade_order_seller.order_no, dw_trade_order_seller_db.trade_order_seller.sub_order_no, dw_trade_order_seller_db.trade_order_seller.biz_type, dw_trade_order_seller_db.trade_order_seller.biz_code, abs(dw_trade_order_seller_db.trade_order_seller.sub_order_status)->Column#170, dw_trade_order_seller_db.trade_order_seller.buyer_id, dw_trade_order_seller_db.trade_order_seller.buyer_name, dw_trade_order_seller_db.trade_order_seller.seller_id, dw_trade_order_seller_db.trade_order_seller.pay_amount, dw_trade_order_seller_db.trade_order_seller.discount_amount, dw_trade_order_seller_db.trade_order_seller.create_time_us |
| └─IndexHashJoin_24 | 0.03 | root | | inner join, inner:TableReader_19, outer key:dw_trade_order_seller_db.trade_order_seller.id, inner key:dw_trade_order_seller_db.trade_order_seller.id, equal cond:eq(dw_trade_order_seller_db.trade_order_seller.id, dw_trade_order_seller_db.trade_order_seller.id) |
| ├─TopN_29(Build) | 0.03 | root | | dw_trade_order_seller_db.trade_order_seller.create_time_us:desc, offset:0, count:10 |
| │ └─IndexReader_39 | 0.03 | root | | index:TopN_38 |
| │ └─TopN_38 | 0.03 | cop[tikv] | | dw_trade_order_seller_db.trade_order_seller.create_time_us:desc, offset:0, count:10 |
| │ └─Selection_35 | 0.03 | cop[tikv] | | eq(dw_trade_order_seller_db.trade_order_seller.biz_type, "203"), ge(dw_trade_order_seller_db.trade_order_seller.create_time_us, 2025-08-21 00:00:00.000000), le(dw_trade_order_seller_db.trade_order_seller.create_time_us, 2025-09-23 00:00:00.000000) |
| │ └─IndexRangeScan_34 | 436.36 | cop[tikv] | table:trade_order_seller, index:idx_selid_status_type_ctimes(seller_id, sub_order_status, biz_type, create_time_us) | range:[2627869160,2627869160], keep order:false |
| └─TableReader_19(Probe) | 0.03 | root | | data:TableRangeScan_18 |
| └─TableRangeScan_18 | 0.03 | cop[tikv] | table:trade_order_seller | range: decided by [dw_trade_order_seller_db.trade_order_seller.id], keep order:false |
+-------------------------------------+---------+-----------+---------------------------------------------------------------------------------------------------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
v7.5.7集群参数