powered by simpleCommunicator - 2.0.37     © 2025 Programmizd 02
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Сломалось заполнение параметров в запросе
12 сообщений из 37, страница 2 из 2
Сломалось заполнение параметров в запросе
    #39980246
Maxim Kovalenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Polesov


А чем плох вариант
Код: sql
1.
where FIELD = coalesce( :PARAM, FIELD )



Ну если хочется получить именно такой-же результат, наверное ни чем.
Что там с точки зрения "стоимости" выполнения - ничего не скажу.
Чем руководствовались когда реализовывалась именно существующая конструкция - не знаю. Гадать не хочу.
Можешь задать вопрос авторам))
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980264
Polesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Kovalenko
Polesov


А чем плох вариант
Код: sql
1.
where FIELD = coalesce( :PARAM, FIELD )



Ну если хочется получить именно такой-же результат, наверное ни чем.
Что там с точки зрения "стоимости" выполнения - ничего не скажу.
Чем руководствовались когда реализовывалась именно существующая конструкция - не знаю. Гадать не хочу.
Можешь задать вопрос авторам))


Потестировал оба варианта на таблице с 1000000 записей на индексированных и иеиндексированных полях.
Разницы практически нет ни в чем - ни в планах, ни во времени выполнения.
Вариант с coalesce чуть быстрее (думаю, за счет prepare запроса с одним параметром, а не двумя).
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980272
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PolesovПотестировал оба варианта на таблице с 1000000 записей на индексированных и иеиндексированных полях.
Разницы практически нет ни в чем - ни в планах, ни во времени выполнения.
Вариант с coalesce чуть быстрее (думаю, за счет prepare запроса с одним параметром, а не двумя).

попробуй в 3.0. Разница может быть очень существенной, да и планы разные. Вариант с COALESCE может быть намного медленней.
В 2.5 да, разницы не будет.
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980281
Maxim Kovalenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Kovalenko
IBExpert
В свежей версии проверь.


Во, совсем другое дело! Все работает.)))


Увы :(
Работает только на первой "паре". Если подключить еще одну "пару", то получим то же самое.
Просто картинка для пущей ясности.
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980288
Maxim Kovalenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Вариант с COALESCE может быть намного медленней.

А из-за чего? То же стало интересно.
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980357
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Kovalenko
Симонов Денис
Вариант с COALESCE может быть намного медленней.

А из-за чего? То же стало интересно.

Наверное оптимизатор стал умнее ибо
Симонов Денис
да и планы разные


ну и занудства ради

Код: sql
1.
 FIELD = coalesce( :PARAM, FIELD )


не эквивалентно
Код: sql
1.
  FIELD = :PARAM  or :PARAM is null


а вот это эквивалентно
Код: sql
1.
 FIELD is not distinct from coalesce( :PARAM, FIELD )
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980362
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Kovalenko
Симонов Денис
Вариант с COALESCE может быть намного медленней.

А из-за чего? То же стало интересно.


в 3.0 для
Код: sql
1.
FIELD = :PARAM  or :PARAM is null 

поражается сразу две ветки плана с использованием индекса и по натуралу. Нужная ветка выбирается в рантайме
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980382
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Kovalenko

Просто картинка для пущей ясности.


Для пущей ясности вместо картинки гораздо полезнее давать текст запроса к системным таблицам, воспроизводящий проблему.

ЗЫ. Сейчас уже не надо.
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980393
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Kovalenko

Работает только на первой "паре". Если подключить еще одну "пару", то получим то же самое.


Исправил.
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980414
Maxim Kovalenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert

Для пущей ясности вместо картинки гораздо полезнее давать текст запроса к системным таблицам, воспроизводящий проблему.


А что конкретно нужно? Ну что бы знать.
Те запросы, которые есть в MON$STATEMENTS - и на 2020.7.16.1 и на 2020.7.16.2 совершенно идентичны.
Если же нужен какой-то запрос выполнить, то подскажи какой конкретно.

IBExpert
]Исправил.


Да, теперь Ok.
Спасибо!
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980421
IBExpert
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Kovalenko
[
А что конкретно нужно? Ну что бы знать.


Запрос к любой системной таблице, чтобы его можно было просто скопипастить в редактор и выполнить.
Например:

Код: plsql
1.
2.
3.
select * from rdb$fields
where ((rdb$field_name = :param1) or (:param1 is null)) and
      ((rdb$field_name = :param2) or (:param2 is null))
...
Рейтинг: 0 / 0
Сломалось заполнение параметров в запросе
    #39980427
Maxim Kovalenko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IBExpert


чтобы его можно было просто скопипастить в редактор и выполнить


Понял. Учту.
Еще раз спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / IBExpert [игнор отключен] [закрыт для гостей] / Сломалось заполнение параметров в запросе
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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