powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите составить запрос
7 сообщений из 32, страница 2 из 2
Помогите составить запрос
    #39359334
Marcello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисТебе точно надо 200000 записей таким запросом вернуть? Подозрительно это.
Совершенно точно. Этот же запрос, но без подзапроса возвращает то же число строк, только делает это намного быстрее.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SELECT
        DC.DC_ID AS DC_ID,
        DC.DC_ID_WHOSE_CD AS DC_ID_WHOSE_CD,
        DC.DC_DATE AS DC_DATE
    FROM
        DOCUMENT DC
    WHERE DC.DC_TYPE = 75
      AND DC.DC_ID_WHOSE_CD IS NOT NULL


Вот план и статистика:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Plan
PLAN (DC INDEX (FK_DOCUMENT_9))

------ Performance info ------
Prepare time = 32ms
Execute time = 5s 562ms
Avg fetch time = 0,03 ms
Current memory = 36 238 608
Max memory = 36 255 992
Memory buffers = 2 048
Reads from disk to cache = 12 516
Writes from cache to disk = 0
Fetches from cache = 889 963



Используется индекс
Код: sql
1.
ALTER TABLE DOCUMENT ADD CONSTRAINT FK_DOCUMENT_9 FOREIGN KEY (DC_TYPE) REFERENCES DOC_TYPE (DCT_CODE);
...
Рейтинг: 0 / 0
Помогите составить запрос
    #39359337
Marcello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
hvladПросто покажи план, для начала
Код: sql
1.
2.
3.
Plan
PLAN (DCX ORDER DOCUMENT_IDX2 INDEX (FK_DOCUMENT_5, FK_DOCUMENT_9))
PLAN (DC INDEX (FK_DOCUMENT_9))



DC_DATE снова не используется:
Код: sql
1.
2.
ALTER TABLE DOCUMENT ADD CONSTRAINT FK_DOCUMENT_5 FOREIGN KEY (DC_ID_WHOSE_CD) REFERENCES CARD_HOLDERS (CH_ID);
ALTER TABLE DOCUMENT ADD CONSTRAINT FK_DOCUMENT_9 FOREIGN KEY (DC_TYPE) REFERENCES DOC_TYPE (DCT_CODE);
...
Рейтинг: 0 / 0
Помогите составить запрос
    #39359338
Marcello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Marcello,
а нет! Теперь используется.

PLAN (DCX ORDER DOCUMENT_IDX2 INDEX (FK_DOCUMENT_5, FK_DOCUMENT_9))
...
Рейтинг: 0 / 0
Помогите составить запрос
    #39359340
Marcello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Симонов ДенисЕсли запрос не отработал за 5 минут срубай его.
Все же дождусь. Индекс по дате похоже теперь "включился".
...
Рейтинг: 0 / 0
Помогите составить запрос
    #39359388
Marcello
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не дождался. Запрос висел почти полчаса. Результата нет.
...
Рейтинг: 0 / 0
Помогите составить запрос
    #39359423
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Marcello,

если запрос вот этот 19959670 то вместо MIN(DCX.DC_DATE) напиши MIN(DCX.DC_DATE+0). Видимо, из-за min в плане
DCX ORDER DOCUMENT_IDX2 приводит к конскому числу чтений с диска, потому ты результата и не можешь дождаться.
Хотя, сомневаюсь, что это улучит ситуацию.
...
Рейтинг: 0 / 0
Помогите составить запрос
    #39359430
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

в его случае вряд ли. У него внешняя сортировка в подзапросе, а значит жопа гарантирована. С оконными функциями запрос выглядит элегантней и выполняется сравнительно быстро.

ИХМО, на 2.5 проще процедурным подходом задачу решить
...
Рейтинг: 0 / 0
7 сообщений из 32, страница 2 из 2
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Помогите составить запрос
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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