powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возможно ли оптимизировать запрос вида...
23 сообщений из 23, страница 1 из 1
Возможно ли оптимизировать запрос вида...
    #38789250
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Возник такой вопрос, есть запрос вида:

Код: sql
1.
2.
3.
select rd.*, pd.*
from raw_dict rd
        join prod_dict pd on pd.raw_id=rd.raw_id and (:pUseMultiSel=1 or rd.raw_id=:pProdID)


Т.е. когда pUseMultiSel = 1 выбираются все записи, в противном случае только по ключу pProdID.
Проблема в том, что когда делается выборка одиночной записи (pUseMultiSel = 0), то исходя из анализа производительности видно, что перебираются все записи raw_dict, если же убрать условие pUseMultiSel=1, то выбирается одна или вообще ни одной (если не найдено ничего).
Как оптимизировать этот запрос с условием pUseMultiSel=1 ?
p.s. писать execute block не очень хочется
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789254
переписать запрос через UNION ALL?
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789256
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiLexx
Код: sql
1.
and (:pUseMultiSel=1 or (:pUseMultiSel=0 and rd.raw_id=:pProdID))


? наобум, без ddl.
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789260
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
wadman[src sql]
and (:pUseMultiSel=1 or (:pUseMultiSel=0 and rd.raw_id=:pProdID))

не помагло
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789272
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiLexxwadman[src sql]
and (:pUseMultiSel=1 or (:pUseMultiSel=0 and rd.raw_id=:pProdID))

не помагло
Тогда 16767450
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789276
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
select rd.*, pd.*
from raw_dict rd
        join prod_dict pd on pd.raw_id=rd.raw_id
where rd.raw_id between iif( :pUseMultiSel=1, -2147483648, :pProdID ) and iif( :pUseMultiSel=1, 2147483647, :pProdID );

::: NB :::

Осторожно. При :pUseMultiSel=1, большом размере таблицы и плохой селективности индекса raw_dict.raw_id вполне может стать хуже, чем было до того.
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789279
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхпереписать запрос через UNION ALL?
и как он мог бы выглядеть? не совсем понимаю как вписать условия чтобы в одном случае отрабатывал UNION ALL а в другом нет
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789285
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiLexxp.s. писать execute block не очень хочется
Ну так пиши два отдельных запроса.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789298
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovНу так пиши два отдельных запроса.

Дмитрий, понимаешь задача так складывается, что нужно в одном запросе.
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789302
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый Э - Эхпереписать запрос через UNION ALL?
Не подскажете как приписать условие - когда UNION ALL должен срабатывать а когда нет
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789342
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiLexxНе подскажете как приписать условие - когда UNION ALL должен срабатывать а когда нет
такого не бывает.
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789353
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvDelphiLexxНе подскажете как приписать условие - когда UNION ALL должен срабатывать а когда нет
такого не бывает.
Подскажите, пожалуйста, как можно было бы оптимизировать?
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789369
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiLexxkdvпропущено...

такого не бывает.
Подскажите, пожалуйста, как можно было бы оптимизировать?

execute block написать и ветвление по условию.
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789375
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastorexecute block написать и ветвление по условию.
стоит задача обойтись стандартным sql (т.е. без использования execute block)
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789376
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pastor,

это же DelphiLexx, он упрямый. Сразу сказал что блок делать не хочет.
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789380
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисэто же DelphiLexx, он упрямый. Сразу сказал что блок делать не хочет.
Не ужели FB никак не может оптимизировать очевидный запрос
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789381
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiLexx,

трёшка может.
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789385
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов ДенисDelphiLexx,трёшка может.
У меня 2.5.2
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789386
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiLexxстоит задача обойтись стандартным sql Это - стандартный sql. Иногда есть смысл читать все сообщения в своём же топеге :-)
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789387
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DelphiLexx,

никто не мешает в приложении условие в WHERE формировать динамически. Вот тебе и 1 запрос
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789412
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидDelphiLexxстоит задача обойтись стандартным sql Это - стандартный sql. Иногда есть смысл читать все сообщения в своём же топеге :-)
Да, запрос страшноват на вид - но работает и работает как надо, спасибо
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789416
DelphiLexx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если у кого-то появиться лучше решение с удовольствие выслушаю
...
Рейтинг: 0 / 0
Возможно ли оптимизировать запрос вида...
    #38789423
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисникто не мешает в приложении условие в WHERE формировать динамически.

Он же уже два раза сказал, что мешает стояк задачи.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Возможно ли оптимизировать запрос вида...
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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