В чем разница между ROWNUM
и ROW_NUMBER
?В базе данных Oracle какая разница между ROWNUM и ROW_NUMBER?
ответ
ROWNUM является «псевдостолбец», который присваивает номер каждой строки, возвращаемой запросом:
SQL> select rownum, ename, deptno
2 from emp;
ROWNUM ENAME DEPTNO
---------- ---------- ----------
1 SMITH 99
2 ALLEN 30
3 WARD 30
4 JONES 20
5 MARTIN 30
6 BLAKE 30
7 CLARK 10
8 SCOTT 20
9 KING 10
10 TURNER 30
11 FORD 20
12 MILLER 10
ROW_NUMBER является аналитической функцией, которая присваивает номер каждой строки в соответствии с его упорядочения в пределах группы строк :
SQL> select ename, deptno, row_number() over (partition by deptno order by ename) rn
2 from emp;
ENAME DEPTNO RN
---------- ---------- ----------
CLARK 10 1
KING 10 2
MILLER 10 3
FORD 20 1
JONES 20 2
SCOTT 20 3
ALLEN 30 1
BLAKE 30 2
MARTIN 30 3
TURNER 30 4
WARD 30 5
SMITH 99 1
Из небольшого чтения, ROWNUM это значение автоматически назначается Oracle в наборе строк (до ORDER BY оцениваемого, так что не никогдаORDER BY ROWNUM
или использовать WHERE ROWNUM < 10
с ORDER BY
).
ROW_NUMBER() представляется функцией назначения номеров строк в набор результатов, возвращаемый подзапросом или разделом.
rownum - это псевдоколонна, которая может быть добавлена к любому запросу выбора, чтобы число возвращаемых строк (начиная с 1). Они упорядочены в соответствии с тем, когда они были идентифицированы как часть окончательного набора результатов. (#ref)
row_number - это аналитическая функция, которая может использоваться для номера строк, возвращаемых запросом, в порядке, заданном функцией row_number().
Помимо других отличий, упомянутых в ответах, вы также должны учитывать производительность. Существует неполномочный но очень интересный отчет здесь, сравнивая различные средства пагинации, среди которых использование ROWNUM
по сравнению с ROW_NUMBER() OVER()
:
RowNum начинается с 1 ..increases после состояния оценивали результатов к истинному , Следовательно, rownum> = 1 возвращает все строки в таблице
- 1. Oracle: ROW_NUMBER 20 раз быстрее, чем ROWNUM
- 2. В чем разница между rowid и rownum в oracle?
- 3. В базе данных, какая разница между ключом и индексом?
- 4. Oracle Какая разница между/и sys?
- 5. Какая разница между (и [?
- 6. какая разница между @ и @ :?
- 7. Какая разница между вложенной таблицей и типом объекта в oracle?
- 8. EclipseLink pagination и Oracle ROWNUM
- 9. Разница между cx_oracle.cursor в python и курсором в базе данных
- 10. Какая разница между списком() и []
- 11. Какая разница между разделителем $$ и //
- 12. Как ускорить row_number в Oracle?
- 13. Разница между владельцем и схемой в базе данных
- 14. Какая разница между @load() и $ {}
- 15. Поведение rownum в Oracle
- 16. Разница между кражей и силой в базе данных
- 17. Oracle 10g производительность между ROWNUM или с п
- 18. Oracle rownum in db2 - архивирование данных Java
- 19. Преобразовать ROWNUM() из db2 в Oracle
- 20. Производительность Oracle ROWNUM
- 21. Назначение значений rownnum в столбце таблицы в базе данных ORACLE?
- 22. Разница между Oracle Client и ODAC
- 23. Thread Какая разница между
- 24. Какая разница между ними?
- 25. Разница между su oracle и su - oracle?
- 26. Какая разница между нулями?
- 27. NodeJS: какая разница между «./ ..» и «..» в требовании?
- 28. какая разница между {} и [] в JavaScript
- 29. В javascript какая разница между оператором '~' и '!'
- 30. Какая разница между $ и $() в jQuery
order by ok ok, например, выберите * from (выберите a, b, c из foo order by d) где rownum <10 – Ron 2009-12-04 00:18:35
@Ron: Попробуйте. Вы поймете, насколько трудно получить первые 10 результатов из всего набора результатов, а затем заказывает их. – Powerlord 2009-12-04 14:47:32