первый ряд VS следующий ряд VS rownum - PullRequest
0 голосов
/ 22 октября 2018

Эти 3 запроса возвращают один и тот же набор результатов, но используют 2 разных метода.Есть ли преимущество в использовании одного над другим?План и время выполнения находятся в одном диапазоне расходов.

Select * 
from user_tab_columns
order  by   data_length desc,table_name, column_name  
fetch first 5 rows only  
Select * 
from user_tab_columns
order  by  data_length desc,table_name, column_name  
fetch next 5 rows only  
select * 
from (
  Select * 
  from user_tab_columns
  order  by  data_length desc,table_name, column_name  
)  
where  rownum <=5  

1 Ответ

0 голосов
/ 22 октября 2018

Ключевые слова first и next, используемые в предложении fetch, являются идеальными заменами друг другу, их можно использовать взаимозаменяемо - это четко указано в документации.Таким образом, у вас есть только два запроса, а не три.(Первые два действительно идентичны.)

Первый запрос легче написать и поддерживать, чем последний запрос.С другой стороны, он доступен только в Oracle 12.1 и более поздних версиях;в Oracle 11.2 и более ранних версиях единственным вариантом является ваш последний запрос.

Предложение fetch более гибкое, например, оно позволяет указать with ties (включить более 5 строк, если строки с rownum4, 5, 6 и 7 связаны, например, с критериями order by.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...