No Microsoft SQL Server, podemos usar a seguinte consulta para retornar a primeira linha que corresponde à condição:
SELECT TOP 1 * FROM MYTABLE WHERE NAME LIKE '%next%'
No Oracle Database, podemos usar a WHERE ROWNUM = 1
cláusula para conseguir a mesma coisa:
SELECT * FROM MYTABLE WHERE NAME LIKE '%next%' AND ROWNUM = 1
Minha pergunta é: o Oracle Database é inteligente o suficiente para interromper a varredura da tabela depois que o primeiro registro correspondente à condição for encontrado?
Basicamente, posso ter certeza de que a Oracle está empregando algum tipo de avaliação de curto-circuito ao usar o ROWNUM?
A coisa mais fácil a fazer é gerar uma consulta e ver.
Dados os dados da amostra:
Então:
Saída de maio:
E, se você olhar para
EXPLAIN PLAN
a consulta:Então a saída é:
Então a resposta para sua pergunta:
Sim, ele irá parar quando atingir a contagem necessária.
Se você tiver outras consultas nas quais está confuso sobre qual pode ser o comportamento, gere um
EXPLAIN PLAN
e veja o que o banco de dados realmente usará.violino