- 添加核心联合索引(最关键!)
sql
-- 联合索引:APPLY_ID(筛选) + trading_time(排序),覆盖查询条件
CREATE INDEX idx_trading_record_apply_time ON SHOP_RECORD(APPLY_ID, trading_time DESC);
- 只需要 "最新的一条记录",可直接用 FETCH FIRST 1 ROW ONLY(Oracle)或 LIMIT 1(MySQL),逻辑更简洁:
sql
-- Oracle 写法
SELECT str.* -- 建议替换为具体字段
FROM SHOP_RECORD str
WHERE str.APPLY_ID = #{applyId}
ORDER BY str.trading_time DESC
FETCH FIRST 1 ROW ONLY;
-- MySQL 写法
SELECT str.* -- 建议替换为具体字段
FROM SHOP_RECORD str
WHERE str.APPLY_ID = #{applyId}
ORDER BY str.trading_time DESC
LIMIT 1;
- 注意:必须配合上述联合索引使用,否则性能依然差。