ORACLE 倒序查询最新一条性能问题 返回
SELECT * FROM (SELECT "EVENT_SUB_ID", "EVENT_VALUE", "EVENT_LOC", "EVENT_STAGE", "L3_EVENT_CODE", "EVENT_TIME", "PRODUCTION_EVENT_TYPE", "EVENT_DATA_SOURCE", "POSITION", "PROCEDURE_CODE", "PROCESS_EVENT_CODE", "PROCESS_EVENT_NAME", "MANUAL_INPUT_USER", "MANUAL_INPUT_TIME", "CAST_STATUS_RECORD_ID", "HEAT_STATUS_RECORD_ID", "REMARK", "DATA_FLAG", "IS_DELETED", "RECORD_ID", "CREATE_USER_ID", "CREATE_TIME", "CREATE_USER_NAME", "UPDATE_USER_ID", "UPDATE_TIME", "UPDATE_USER_NAME", ROW_NUMBER() OVER(ORDER BY "EVENT_TIME" DESC) AS RowIndex FROM "EM_PRODUCTION_EVENTS_HEAT_SMELT" ) T WHERE RowIndex BETWEEN 1 AND 1

每次都会全表扫描,能否进行优化
热忱回答(12)
-
fate sta VIP0
1个月前时间字段加上索引试试,表结构合理肯定会走索引
0 回复 -
fate sta VIP0
1个月前高版本oracle才支持,不能兼容低版本
0 回复 -
fate sta VIP0
1个月前SELECT * FROM (
SELECT * FROM my_table
ORDER BY some_column
)
WHERE ROWNUM <= 1;
如果是rownum也是需要子查询的。
0 回复 -
beginner VIP0
1个月前索引都是加了的,IS_DELETED,EVENT_TIME 两个字段是复合索引
是都需要子查询,
ROW_NUMBER() 是全表排序且全表扫描 性能极差,
ROWNUM 不会进行全表排序
0 回复 -
beginner VIP0
1个月前你可以测试一下,单张表有5W+的数据,然后IS_DELETED,EVENT_TIME 都建立索引,使用 ROW_NUMBER() 和 ROWNUM 查询性能差很多
0 回复 -
fate sta VIP0
1个月前SqlSugarCore 5.1.4.206-preview22
按你的要求修化了。
0 回复 -
fate sta VIP0
1个月前过五分钟后安装预览版本。
0 回复 -
beginner VIP0
1个月前
为啥要套3个select?
0 回复 -
fate sta VIP0
1个月前@beginner:用的现成的分页方法。后面在优化。目前这个方法性能OK的
0 回复 -
beginner VIP0
1个月前.net framework 没有发布206版本
0 回复 -
fate stay night VIP0
1个月前过五分钟后安装
0 回复 -
fate stay night VIP0
1个月前过五分钟后安装
0 回复