订单数据源数据速度优化

This commit is contained in:
luojiaquan
2026-10-20 10:14:38 +08:00
parent 58d7ec90b0
commit 8093cb52e7
2 changed files with 25 additions and 5 deletions
@@ -58,10 +58,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
1 = 1
</if>
<if test="query.beginTime != null and query.beginTime != ''">
AND o.PICKUP_DATE &gt;= TO_TIMESTAMP(#{query.beginTime}, 'YYYY-MM-DD HH24:MI:SS')
<!-- PICKUP_DATE 是 DATE 列:必须用 TO_DATE 比较;TO_TIMESTAMP 会触发
INTERNAL_FUNCTION(列) 使 (CUSTOMER_CODE, PICKUP_DATE) 复合索引失效,
客户+提货时间查询从 1s 恶化到 200s+ -->
AND o.PICKUP_DATE &gt;= TO_DATE(#{query.beginTime}, 'YYYY-MM-DD HH24:MI:SS')
</if>
<if test="query.endTime != null and query.endTime != ''">
AND o.PICKUP_DATE &lt;= TO_TIMESTAMP(#{query.endTime}, 'YYYY-MM-DD HH24:MI:SS')
AND o.PICKUP_DATE &lt;= TO_DATE(#{query.endTime}, 'YYYY-MM-DD HH24:MI:SS')
</if>
AND o.BL_PICKUP = 1
AND o.ORDER_STATUS IN (3, 4, 5, 6, 7, 8, 11)
@@ -135,11 +138,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<!--
Month-range list: sort only narrow keys, then Java loads display/full rows by ID.
Avoids ORDER BY on o.* which gets very slow when pickup window is ~1 month.
TO_DATE 比较(勿改回 TO_TIMESTAMP):索引可 sargable 走 (CUSTOMER_CODE, PICKUP_DATE) 复合索引。
-->
<select id="selectTabOrderMonitorKeyPage" resultType="java.util.HashMap">
SELECT ID FROM (
SELECT inner_q.ID AS ID, ROWNUM AS rn FROM (
SELECT /*+ FIRST_ROWS(${endRow}) */ o.ID, o.PICKUP_DATE, o.ORDER_ID
SELECT o.ID, o.PICKUP_DATE, o.ORDER_ID
FROM ${orderTable} o
WHERE
<include refid="tabOrderMonitorWhere"/>