Прислали мне SQL-запрос с жалобой, что при определенных параметрах он работает около 10 минут. Хотя в большинстве случаев возвращает данные быстрее, чем за секунду. Запрос не простой. В нем объединяется несколько таблиц и вьюшек, а среди всех условий – регистронезависимый поиск по вхождению строки: UPPER(поле) LIKE '%СТРОКА%'. Мои замечания по поводу UPPER и LIKE по вхождению, так же как и предложения изменить запрос или использовать полнотекстовый поиск не приняли, т.к. запрос создан генератором запросов и переписывать его никто не будет. Проблему усугублял планировщик запросов PostgreSQL. Судя по плану, когда запрос возвращал данные, LIKE выполнялся по уже отфильтрованным данным и проверял несколько десятков строк, и время выполнения было приемлемое. А с параметрами при которых результат запроса был пустой, LIKE выполнялся первым условием и перебирал все строки в таблице. Как результат – жуткие тормоза. Это поведение моделировалось на PostgreSQL с 12-й версии по 17-ю. На MS SQL Server план этого запроса составлялся всегда корректно.
Язык программирования самого высокого уровня содержит всего несколько команд для управления программистами
22 сентября 2025
10 сентября 2025
Изменения Delphi RTL в Delphi 13 Florence
В предстоящем релизе Delphi 13 Florence (RAD Studio 13 Florence) пользователей ждут изменения в Run-Time Library (RTL):
09 сентября 2025
Директива "noreturn" для объявления процедур в Delphi 13 Florence
В компилятор Delphi 13 Florence добавлена директива "noreturn". "noreturn" - это атрибут объявления процедуры, который указывает, что вызов процедуры 100% вызовет исключение, а не завершит обычное выполнение. Это позволит компилятору выполнить оптимизацию путем исключения лишнего кода и пропустить предупреждение о неопределенных результатах в функциях.
08 сентября 2025
Новые директивы компилятора {$PUSHOPT} и {$POPOPT} в Delphi 13 Florence
В компилятор Delphi 13 Florence добавлены новые директивы {$PUSHOPT} и {$POPOPT}, которые сохраняют и восстанавливают текущий набор параметров и конфигурации warning'гов. Их реализация аналогична "#pragma option push" и "#pragma option pop") в C++.
07 сентября 2025
Новые операторы "is not" и "not in" в Delphi 13 Florence
Компилятор Delphi 13 Florence обзавелся двумя новыми операторам: "is not" и "not in". Они предлагают более короткую и удобочитаемую версию существующих комбинированных операторов.
04 сентября 2025
Поддержка VCL-стилей у TitleBarPanel и прокрутка пунктов меню в Delphi 13 Florence
В предстоящем релизе Delphi 13 Florence в Visual Component Library (VCL) пользователей ждет множество изменений. Это не только улучшения качества, но и новые мелкие функции. Можно выделить две новые "плюшки", на которые разработчики RAD Studio получили много запросов.
Подписаться на:
Сообщения (Atom)