Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/39: Рейтинг темы: голосов - 39, средняя оценка - 4.67
5 / 5 / 0
Регистрация: 14.10.2010
Сообщений: 210
1

Есть ли в Oracle что-то подобное limit?

16.05.2011, 08:30. Показов 7171. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть ли в ORACLE что наподобие limit?
Сейчас делаю вот так
SQL
1
2
SELECT vse.* FROM(SELECT s.drag  FROM spk s ORDER BY s.data DESC)vse
       WHERE rownum<2
Но поскольку таблица очень большая, то доп просмотр таблицы занимает время
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.05.2011, 08:30
Ответы с готовыми решениями:

Ребят есть ли что то подобное?
Есть такой плагин для фаирфокса что бы делать рассылку ВКонтакте сообщений по всем своим контактам?...

Есть ли что-то подобное ColorBox на C#
На Delphi программирую очень давно, решил кое какую программу написать на C# и сразу возникла...

Есть ли что то подобное на JSTL?
Есть ли что то подобное на JSP JSTL как на XSL? пример: &lt;xsl:template name=&quot;name1&quot;&gt; ...

Есть ли что-то подобное в дельфе ?
Подскажите пожайлуста, если ли что-то подобное в дельфе условию : перем_2:= ?(перем_1 = 1, 1, 0);...

5
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
16.05.2011, 09:48 2
Кроме ROWNUM можно почитать про аналитическую функцию ROW_NUMBER()
0
5 / 5 / 0
Регистрация: 14.10.2010
Сообщений: 210
16.05.2011, 10:15  [ТС] 3
она почти такая же, возвращает номер строки, без доп SELECT все равно не обойтись
она вернет первых n строк И ORDER by тогда ни какой роли не играет уже
0
Модератор
4217 / 3058 / 583
Регистрация: 21.01.2011
Сообщений: 13,205
16.05.2011, 10:41 4
1.
SQL
1
2
3
4
5
6
7
SELECT o.*
FROM (SELECT rownum rw
           , o.*
      FROM (SELECT o.* FROM all_tables o ORDER BY TABLE_NAME) o
      WHERE rownum < 20
     ) o
WHERE o.rw >= 10
2.
SQL
1
2
3
4
5
6
7
SELECT o.*
FROM (SELECT o.*
           , ROW_NUMBER() OVER (ORDER BY o.table_name) rw
      FROM all_tables o
     ) o
WHERE o.rw >= 10
  AND o.rw < 20
Что касаемо совсем без доп. SELECT - да, такого способа нет. Дело в том, что такая резка на куски используется для целей Web при динамическом формировании страниц, а Oracle специально под Web не заточен.
К слову сказать, в MySQL есть конструкция LIMIT и синтаксически получается проще. Вот только как это реализовано внутри - не в курсах, не факт, что быстрее Oracle
0
648 / 77 / 0
Регистрация: 23.01.2010
Сообщений: 193
16.05.2011, 11:05 5
Если Вам нужно именно ускорить вывод данных, то должно помочь создание индекса на spk.data и либо определение spk.data как NOT NULL, либо переписывание запроса как:
SQL
1
2
3
SELECT vse.* FROM
   (SELECT s.drag  FROM spk s WHERE s.DATA IS NOT NULL ORDER BY s.DATA DESC) vse
WHERE rownum<2
Если подобное изменение запроса не поломает логику, то работать должно достаточно быстро (например у меня на обычном компьютере на таблице с 55 миллионами записей отрабатывает за 0,08 секунды).
0
105 / 75 / 0
Регистрация: 29.06.2009
Сообщений: 328
16.05.2011, 11:55 6
Цитата Сообщение от php_vasia Посмотреть сообщение
она почти такая же, возвращает номер строки, без доп SELECT все равно не обойтись
она вернет первых n строк И ORDER by тогда ни какой роли не играет уже
Дополнительный select вовсе не нужен. Примеры, которые Вам показали - это разовая заплатка на скорую руку.

Мыслите проще.

Если нужно 10 первых записей, то откройте нужный select курсором и отсчитайте 10 первых записей.

Будет без дополнительного select'а. (можете ещё ускорить - задайте режим оптимизатора в типсах запроса.)

Куда засунуть этот курсор с циклом?

Решайте сами. Можете в клиенте, можете в сторед процедуру. Или ещё как-нибудь по хитрому.

Можете универсальную процедуру своять. Дело вкуса и опыта.
0
16.05.2011, 11:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.05.2011, 11:55
Помогаю со студенческими работами здесь

HTTPWebResponse и HTTPWebRequest есть ли что то подобное в 1С 8.2?
Приветствую! Подскажите может ли 1C обмениваться данными с какими - нибудь сайтами? То есть...

Есть ли в MFC что-то подобное TDBGrid ?
Возникла задача отображения большого количества записей в сетке данных типа TDBGrid (ListBox явно...

Есть ли что то подобное innerHTML в Netscape?
Если нельзя изменять выводимые данные, то какая это динамика! Microsoft is cool! Как можно менять...

Eval в Басике 6.0 есть ли что нибудь подобное??
У экселя есть метод Evaluate, которому можно скормить любое вычисляемое выражение. Evaluate('4+2')...

Есть ли в Net что-то подобное ValueListEditor из Borland
Здравствуйте, подскажите пожалуйста есть ли в нете что-то подобное. Это такая табличка с...

есть ли в с++ что - нибудь подобное, и покажите как ...
В c# есть команда Ref. Например когда мы хотим передать в качестве параметоров не знач....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru