powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос до определенной строчки
48 сообщений из 48, показаны все 2 страниц
Запрос до определенной строчки
    #39600324
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, плиз, синтаксис запроса до определенной строцки. Смысл таков: есть таблицы ТАВLE, с миллионами записей. Все записи имеют поля ИД и SYSDATE. Необходимо запрашивать каждый день данные о записах за сегодняшний день. Тоесть, дни за предыдущие периоды не нужны. Из-за этого отсутствует индекс по полю SYSDATE. Как сделать запрос, ( скорее всего, исползуя аналитические функции), чтоб не сканировать всю таблицу?
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600343
LemkolegПодскажите, плиз, синтаксис запроса до определенной строцки.Это синтаксис до 4й строцки, не включая её:
Код: plsql
1.
2.
3.
4.
  1 select
  2    поле1,
  3    поле2,
  4 ...


Lemkolegза сегодняшний деньсегодня ночь.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600351
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkolegскорее всего, исползуя аналитические функции), чтоб не сканировать всю таблицу?

Никакие аналитические функции тут не помогут - или индекс, или партицирование. А так - full scan.

SY.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600627
j2k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg Из-за этого отсутствует индекс по полю SYSDATE
Не до конца понял, из-за чего "этого" ?
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600686
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
j2k,
Из-за того, что запрашиваються даные только за текущий день. Какой смысл хранить индекс по всей таблице
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600687
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему только индекс....

Какой смысл хранить данные, раз они не запрашиваются. Удалите лишние данные и проблемы со скоростью не будет.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600688
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkolegзапрашиваються даные только за текущий денькакой тогда смысл хранить таблицу по всем данным?
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600691
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2-,
Как мне нравяться вопросы ( а особенно, ответы) не по существу. Потому-что, даные из других столбцов используються.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600693
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SYLemkolegскорее всего, исползуя аналитические функции), чтоб не сканировать всю таблицу?

Никакие аналитические функции тут не помогут - или индекс, или партицирование. А так - full scan.

SY.

Спасибо
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39600923
Фотография шК0ДЕР
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg-2-,
Как мне нравяться вопросы ( а особенно, ответы) не по существу. Потому-что, даные из других столбцов используються.

Как вариант - создай новую таблицу-клон с идентичными нужными полями и копируй/апдейть в ней данные из основной таблицы. Ну и ежедневно подчищай из нее, через джоб, старые, не актуальные записи
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601183
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
шК0ДЕРLemkoleg-2-,
Как мне нравяться вопросы ( а особенно, ответы) не по существу. Потому-что, даные из других столбцов используються.

Как вариант - создай новую таблицу-клон с идентичными нужными полями и копируй/апдейть в ней данные из основной таблицы. Ну и ежедневно подчищай из нее, через джоб, старые, не актуальные записи
Такой вариант был, как запасной.Надеялся зделать это проще
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601210
проходил мимо...
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,

не обижайся, но после заявлкния о том, что индекс не нужен, пошёл прямой троллинг. и это правильно - видимо, ты совсем не в курсе, как работает БД...
и только SY, как всегда, по существу. даже скучно.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601481
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
проходил мимо...Lemkoleg,

не обижайся, но после заявлкния о том, что индекс не нужен, пошёл прямой троллинг. и это правильно - видимо, ты совсем не в курсе, как работает БД...
и только SY, как всегда, по существу. даже скучно.
Мне вот интерестно: с чего ты взял, что я не знаю, как работает БД? Я с уверенностью могу утверждать: мой вопрос никак не связан со знаниями об индексах и их предназначениями. Аналитические функции имеют возможность сканировать определенный корридор от выбраной строки. Вот я и предпеложил, что (возможно) этот корридор можно определить по условию. Тогда бы не пришлось хранить, оьслуживать и накапливать ненужный индекс. Это я тебе обьясняю, бо, видимо, ты не очень разобрался в чем дело
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601493
Vint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,
как можно быть настолько неадекватным чтобы пытаться достать данные из "Аналитические функции имеют возможность сканировать определенный корридор от выбраной строки." без полного сканирования? тупость это диагноз. ты полный ноль с раздутым самомнением.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601502
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VintLemkoleg,
как можно быть настолько неадекватным чтобы пытаться достать данные из "Аналитические функции имеют возможность сканировать определенный корридор от выбраной строки." без полного сканирования? тупость это диагноз. ты полный ноль с раздутым самомнением.
Я, сейчас, поавильно понял: ты отрицаешь возможность (с помощью аналитических функций) выборку даных с определенным окном (например: 200 строк "до")?
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601504
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegЯ, сейчас, поавильно понял: ты отрицаешь возможность (с помощью аналитических функций) выборку даных с определенным окном (например: 200 строк "до")?


Да пойми ты, аналитические ф-ции выполняются над resultset и в принципе не могут влиять на то сколько строк попало в resultset. Они не производят выборку даных с определенным окном а производят вычисления над уже выбранными данными разбивая resultset на партиции/она только для вычислений значений этих аналитических ф-ций.

SY.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601506
Фвмясо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ничего, пройдет годик-другой и с такими понятиями о СУБД появится очередной Стебелек.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601594
Uratsakidogi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Видать, скачал-таки книжку.......

21084672
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601599
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,

Ты хотя бы дочитал до параграфа "План запроса"?
Посмотри планы, выясни, на каком шаге table/index scan для получения данных, а на каком window для ограничения выборки из данных полученных на предыдущем шаге фильтра.
Желательно до того, как ещё раз опозоришься демонстрацией своего невежества.

И да, правильнее так
Lemkolegс уверенностью могу утверждать
Lemkolegя не знаю, как работает БД
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601600
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegВсе записи имеют поля ИД и SYSDATE
Искренне, от всей души, надеюсь, что sysdate это не название поля в таблице.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601667
Sir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sir
Гость
Lemkoleg,

У меня есть похожая табличка. И тоже иногда надо делать запросы по последним дням.
Использую примерно такой запрос:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
SELECT *
FROM table_name
WHERE id >  (
              SELECT id
                 FROM
                  (
                    SELECT /*+ INDEX(table_name.id_index_name) */
                           id, field_date
                       FROM table_name
                       ORDER BY 1 DESC
                   )
                  WHERE TRUNC(SYSDATE) > TRUNC(field_date) AND ROWNUM = 1
              )



Если повезет с планом, то будет работать по индексу.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601677
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,

В чем глубинный смысл этого запроса? Я на него смотрю и понять не могу (((
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601679
Sir
Если повезет insert into table_name{id, field_name) values(1e125, date '9999-01-01');
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601686
Sir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Sir
Гость
Leonid Kudryavtsev,

Перебираются записи в таблице по индексу в обратном порядке и находится первый id, у которого дата отличается от текущей.
Если id заполняются в таблице строго по времени, то это будет первый id текущих суток.
И его можно использовать для выборки записей.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601687
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevВ чем глубинный смысл этого запроса
Магия данных для вырожденного случая.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601692
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SirLeonid Kudryavtsev,

Перебираются записи в таблице по индексу в обратном порядке и находится первый id, у которого дата отличается от текущей.
Если id заполняются в таблице строго по времени, то это будет первый id текущих суток.
И его можно использовать для выборки записей.

Спасибо. Слона то я и не заметил.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601853
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SirLeonid Kudryavtsev,

Перебираются записи в таблице по индексу в обратном порядке и находится первый id, у которого дата отличается от текущей.
Если id заполняются в таблице строго по времени, то это будет первый id текущих суток.
И его можно использовать для выборки записей.
Это то, чего я и пытаюсь добиться
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601905
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сначала ты утверждала что индекс тебе не нужен:
Lemkolegj2k,
Из-за того, что запрашиваються даные только за текущий день. Какой смысл хранить индекс по всей таблице

Теперь говоришь что нужен:
LemkolegSir Перебираются записи в таблице по индексу
Это то, чего я и пытаюсь добиться

На каком ты месяце?
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601914
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLer, ну не совсем так
XMLerутверждала что индекс тебе не нужен:
в первом посте было уточнение
Lemkolegотсутствует индекс по полю SYSDATE

И если есть графеновая гарантия, что нарастание индексированного суррогатного PK и даты в поле sysdate эквивалентно и однонаправленно, то вариант с магией данных даже прокатит.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601924
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SirЕсли повезет с планом, то будет работать по индексу.

Бред. Начнем с того что TRUNC(SYSDATE) > TRUNC(field_date) в принципе ничего не вернет. Так-что TRUNC(field_date) = TRUNC(SYSDATE) а лучше field_date >= TRUNC(SYSDATE). Едем дальше. Индекса по field_date нет. Допустим есть индекс по id,field_date. Тогда, посколько order by DESC , будет не INDEX FULL SCAN с STOPKEY а INDEX FULL SCAN и только затем сортировка результата INDEX FULL SCAN с STOPKEY. Но это не суть. Суть в том что WHERE field_date >= TRUNC(SYSDATE) AND ROWNUM = 1 вернет (исходя из id увеличивается при каждой последующей вставке) id последней строки на момент select'a. А посему, id > ... ничего не вернет a id >= ... вернет последнюю строку на момент select'a.

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY HH24:MI:SS'
/
CREATE TABLE TBL
  AS
    SELECT  LEVEL ID,
            TRUNC(SYSDATE) + 1/24 * (LEVEL - 1) FIELD_DATE
      FROM  DUAL
      CONNECT BY LEVEL <= 9
/
ALTER TABLE TBL
  MODIFY(
         ID NOT NULL,
         FIELD_DATE NOT NULL
        )
/
CREATE UNIQUE INDEX TBL_IDX1
  ON TBL(ID,FIELD_DATE)
/
SELECT  ID,
        TO_CHAR(FIELD_DATE,'MM/DD/YYYY HH24:MI:SS') FIELD_DATE
  FROM  TBL
  WHERE FIELD_DATE >= TRUNC(SYSDATE)
/

        ID FIELD_DATE
---------- -------------------
         1 02/14/2018 00:00:00
         2 02/14/2018 01:00:00
         3 02/14/2018 02:00:00
         4 02/14/2018 03:00:00
         5 02/14/2018 04:00:00
         6 02/14/2018 05:00:00
         7 02/14/2018 06:00:00
         8 02/14/2018 07:00:00
         9 02/14/2018 08:00:00

9 rows selected.
SELECT  *
  FROM  TBL
  WHERE ID >= (
               SELECT  ID
                 FROM  (
                        SELECT  /*+ INDEX(TBL TBL_IDX1) */
                                ID,
                                FIELD_DATE
                          FROM  TBL
                          ORDER BY 1 DESC
                       )
                 WHERE FIELD_DATE >= TRUNC(SYSDATE)
                   AND ROWNUM = 1
              )
/

        ID FIELD_DATE
---------- -------------------
         9 02/14/2018 08:00:00

SQL> 



SY.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601935
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,
я не про вариант с магией данных а про смену настроения ТС, сначала она хотела без индекса а после благодарила за индекс.

И таки да, индекс д.б. на id и дату. И магия данных тоже обязательное условие.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601942
Фотография env
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Соломон, ты фильтр не в ту сторону развернул.
trunc(field_date) < trunc(sysdate) при переборе сверху вниз как раз вернёт последнюю запись предыдущего дня.


XMLerиндекс д.б. на id и дату.
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
create table dropme_t (id number not null, some_field varchar2(500), dt date)
/

create unique index dropme_i on dropme_t(id)
/

insert into dropme_t (id, some_field, dt)
select level, dbms_random.string('p',500), date '2017-12-01' + level/24 
from dual 
connect by level <= 2*1e5
/

commit
/

select * 
from dropme_t t
where t.id > (select t2.id 
              from (select /*+ index (tt)*/ tt.id, tt.dt 
                    from dropme_t tt 
                    order by tt.id desc
                    ) t2 
              where t2.dt < trunc(sysdate) and rownum = 1
              )
/

98201 rows selected.


Execution Plan
----------------------------------------------------------
Plan hash value: 3847925245

---------------------------------------------------------------------------------------------
| Id  | Operation                        | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
---------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                 |          | 10129 |  2710K|     3   (0)| 00:00:01 |
|   1 |  TABLE ACCESS BY INDEX ROWID     | DROPME_T | 10129 |  2710K|     3   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN               | DROPME_I |  1823 |       |     3   (0)| 00:00:01 |
|*  3 |    COUNT STOPKEY                 |          |       |       |            |          |
|   4 |     VIEW                         |          |    84 |  1260 |   248   (1)| 00:00:01 |
|*  5 |      SORT ORDER BY STOPKEY       |          |    84 |  1848 |   248   (1)| 00:00:01 |
|*  6 |       TABLE ACCESS BY INDEX ROWID| DROPME_T |    84 |  1848 |   247   (0)| 00:00:01 |
|   7 |        INDEX FULL SCAN           | DROPME_I |   202K|       |   247   (0)| 00:00:01 |
---------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("T"."ID"> (SELECT "T2"."ID" FROM  (SELECT /*+ INDEX ("TT") */
              "TT"."ID" "ID","TT"."DT" "DT" FROM "DROPME_T" "TT" WHERE "TT"."DT"<TRUNC(SYSDATE@!)
              ORDER BY "TT"."ID" DESC) "T2" WHERE ROWNUM=1))
   3 - filter(ROWNUM=1)
   5 - filter(ROWNUM=1)
   6 - filter("TT"."DT"<TRUNC(SYSDATE@!))

Note
-----
   - dynamic sampling used for this statement (level=2)
   - automatic DOP: Computed Degree of Parallelism is 1 because of parallel threshold


Statistics
----------------------------------------------------------
          0  recursive calls
          0  db block gets
      24085  consistent gets
          0  physical reads
          0  redo size
   51443699  bytes sent via SQL*Net to client
      72477  bytes received via SQL*Net from client
       6548  SQL*Net roundtrips to/from client
          1  sorts (memory)
          0  sorts (disk)
      98201  rows processed



Индекс на id, dt без магии данных не нужен. Достаточно id. Велосипед из костылей вполне способен ехать.

Но корректный результат будет только за счёт магии данных.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601989
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,

чесно говоря не совсем понимаю смысл
Код: plsql
1.
2.
|*  6 |       TABLE ACCESS BY INDEX ROWID| DROPME_T |    84 |  1848 |   247   (0)| 00:00:01 |
|   7 |        INDEX FULL SCAN           | DROPME_I |   202K|       |   247   (0)| 00:00:01 |



просмотрит всю таблицу, да еще и через индекс? или я неправ?

чем метотод c id луче за select * from tt where DT>=TRUNC(SYSDATE)?

.....
stax
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39601993
XMLer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
env,
если
Код: plsql
1.
create index dropme_i  on dropme_t(id, dt)


то из твоего плана пропадет строка 6.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602051
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SirLeonid Kudryavtsev,

Перебираются записи в таблице по индексу в обратном порядке и находится первый id, у которого дата отличается от текущей.
Если id заполняются в таблице строго по времени, то это будет первый id текущих суток.
И его можно использовать для выборки записей.
Именно этого я и пытаюсь добиться. Но, приходиться, либо спорить с самоуверенными, либо обьяснять непонятливым
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602053
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Lemkoleg,
Да тюв поле dateadding ровняеться значению sysdate- дате добавления. Обратная логика - всеоля, до определенного ИД - есть поля, добавленые заопределенный период. Чего тупим, господа?
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602054
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegLemkoleg,
Да тюв поле dateadding ровняеться значению sysdate- дате добавления. Обратная логика - всеоля, до определенного ИД - есть поля, добавленые заопределенный период. Чего тупим, господа?
Постараюсь написать без пропусков и замены букв ( не давая пищу для травли идиотам).
Даные в поле dateadding ровняеться значению sysdate - дате добавления. Обратная логика - все поля, до определенного ИД - есть поля, добавленые за определенный период. Чего тупим, господа?
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602056
LemkolegровняетьсяРусский язык в твоей стране не преподают? Тогда укажи в профиле.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602064
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пища идиотаLemkolegровняетьсяРусский язык в твоей стране не преподают? Тогда укажи в профиле.
Заечем? Тебе от этого легче? Тогда, этот сайт - не твоя стихия...
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602070
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XMLerСначала ты утверждала что индекс тебе не нужен:
Lemkolegj2k,
Из-за того, что запрашиваються даные только за текущий день. Какой смысл хранить индекс по всей таблице

Теперь говоришь что нужен:
Lemkolegпропущено...

Это то, чего я и пытаюсь добиться

На каком ты месяце?
Тебе кто "утверждала"?. Ты на..... чем?....вобще?
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602077
JoeD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegКак сделать запрос, чтоб не сканировать всю таблицу? Если есть возможность добавить столбец или есть подходящий по смыслу, посмотрите на решение описаное Кайтом в Expert Oracle Database Architecture chapter 1 или воттутавот . Идея в создании функционального индекса в котором все "ненужные" записи будут представлены наллами. Индекс в таком случае получается близким к минимально возможному - исчезает ограничение "Из-за этого [отсутствует]".
Новые записи добавляются с "нужным" значением, по мере обработки или устаревания значение должно быть установлено в "ненужное" либо самим приложением, либо джобом, соответственно.
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602081
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
env
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
select * 
from dropme_t t
where t.id > (select t2.id 
              from (select /*+ index_desc (tt)*/ tt.id, tt.dt 
                    from dropme_t tt 
                    order by tt.id desc
                    ) t2 
              where t2.dt < trunc(sysdate) and rownum = 1
              )
/

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
SQL_ID  aw2hbr8ym8n3j, child number 0
-------------------------------------
select * from dropme_t t where t.id > (select t2.id               from
(select /*+ index_desc (tt)*/ tt.id, tt.dt                     from
dropme_t tt                     order by tt.id desc
) t2               where t2.dt < trunc(sysdate) and rownum = 1
     )

Plan hash value: 2083051503

------------------------------------------------------------------------------------------------
| Id  | Operation                           | Name     | Rows  | Bytes | Cost (%CPU)| Time     |
------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT                    |          |       |       |     1 (100)|          |
|   1 |  TABLE ACCESS BY INDEX ROWID BATCHED| DROPME_T |     1 |   274 |     1   (0)| 00:00:01 |
|*  2 |   INDEX RANGE SCAN                  | DROPME_I |     1 |       |     1   (0)| 00:00:01 |
|*  3 |    COUNT STOPKEY                    |          |       |       |            |          |
|   4 |     VIEW                            |          |     1 |    13 |     1   (0)| 00:00:01 |
|*  5 |      TABLE ACCESS BY INDEX ROWID    | DROPME_T |     1 |    22 |     1   (0)| 00:00:01 |
|   6 |       INDEX FULL SCAN DESCENDING    | DROPME_I |     1 |       |     1   (0)| 00:00:01 |
------------------------------------------------------------------------------------------------

Predicate Information (identified by operation id):
---------------------------------------------------

   2 - access("T"."ID">)
   3 - filter(ROWNUM=1)
   5 - filter("TT"."DT"<TRUNC(SYSDATE@!))
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602084
Фотография Sayan Malakshinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
just4fun, как дополнительный вариант
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
create or replace package p_dropme as
  type dropme_type is table of dropme_t%rowtype;
  function dropme_func return dropme_type pipelined;
end;
/
create or replace package body p_dropme as
   function dropme_func return dropme_type pipelined as
   begin
      for r in (select--+ index_desc(tt (id))
                  tt.*
                from dropme_t tt
                order by tt.id desc
      )
      loop
         exit when r.dt < trunc(sysdate);
         pipe row(r);
      end loop;
   end;
end;
/

...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602087
982183
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уверен, что
WHERE id >
будет работать быстрее, чем
WHERE SYSDATE =
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602162
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegLemkoleg,
Да тюв поле dateadding ровняеться значению sysdate- дате добавления. Обратная логика - всеоля, до определенного ИД - есть поля, добавленые заопределенный период. Чего тупим, господа?

для Вашего случая ключевым есть index_desc для ід

21192612

в плане не должно быть SORT

.....
stax
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39602166
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
982183Не уверен, что
WHERE id >
будет работать быстрее, чем
WHERE SYSDATE =
если записей за текущую дату относительно мало, и пойдет по индексу c обратной стороны (DESCENDING) то будет

.....
stax
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39604100
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stax,
В этом и есть задумка. Идея оказалась нетакая уж и бредовая
...
Рейтинг: 0 / 0
Запрос до определенной строчки
    #39604172
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegStax,
В этом и есть задумка. Идея оказалась нетакая уж и бредовая

імхо, совсем не бредовая, но надо акуратно выверить план

если данные напр за 10лет, то выиграш будет в сотни раз


странно токо что нет индекса по дате (без времени) или "архивных" таблиц

.....
stax
...
Рейтинг: 0 / 0
48 сообщений из 48, показаны все 2 страниц
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Запрос до определенной строчки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]