更快地发出sql请求

问题描述:

我收到以下sql请求,我想知道是否有可能使其工作更快。我可以在这里改变一下吗?它目前执行时间为0.24秒。更快地发出sql请求

SELECT RECNO 
FROM (SELECT T.ID, T.RECNO, T.STATE, T.TYPEID 
     FROM SOME_TABLE T 
     ORDER BY T.ID) 
WHERE ROWNUM = 1 AND TYPEID = 123123 AND STATE = 123; 

试试这个:

SELECT RECNO 
FROM (SELECT T.ID, T.RECNO, T.STATE, T.TYPEID 
     FROM SOME_TABLE T 
     where TYPEID = 123123 AND STATE = 123 
     ORDER BY T.ID) a 
    WHERE ROWNUM = 1 

,如果你使用的是Oracle 12c中您可以使用OFFSET-FETCH +

SELECT * FROM SOME_TABLE T 
Where TYPEID = 123123 AND STATE = 123; 
ORDER BY T.ID   
FETCH NEXT 1 ROWS ONLY --OFFSET 0 ROWS FETCH NEXT 1 ROWS ONLY 

虽然不是很肯定的性能

+0

但我认为'ROWNUM '是专栏名称。如果我错了,请纠正我。 –

+1

@HamzaAnis - 不要在你的餐桌上出现一栏。 'ROWNUM'伪列返回一个数字,指示Oracle从一个表或一组连接行中选择行的顺序。检查链接以获取更多信息https://docs.oracle.com/cd/B28359_01/server.111/b28286/pseudocolumns009.htm#SQLRF00255 –

+0

@HamzaAnis不,它是记录行的编号 – CodePuppe