Найти в Дзене
Покупайте СтеллыИ дарите их за контент
8 часов назад
 • Вы подписаны

with function и pragma udf: обещали быстрее, проверяем

🔍 Коллеги, всем привет! 👋 На связи Денис. В посте про функции в SQL я вскользь написал: «С 12c: pragma udf или with function - дешевле переключение контекста». Юрий в комментах: «вот это интересно, примеров бы». Держите. С замером 😄 with function Функция объявляется прямо в запросе, без create: with function get_vat(p_sum number) return number is begin return round(p_sum * 0.2, 2); end; select salary, get_vat(salary) vat from employees / Когда удобно: разовый скрипт, нет прав на create, логика нужна только этому запросу. Александр в комментах поделился кейсом: через with function собирает трейс-файл из v$diag_trace_file_contents в CLOB...

3 дня назад
 • Вы подписаны

Функция в SQL-запросе: можно, но есть нюансы

🔍 Коллеги, всем привет! 👋 На связи Денис. Можно ли вызвать свою PL/SQL-функцию прямо в select? Можно. Но за этим «можно» прячется пачка ограничений и пара граблей по производительности. Давайте пройдёмся. Как это выглядит create or replace function get_vat(p_sum number) return number is begin return round(p_sum * 0.2, 2); end; / select id, amount, get_vat(amount) vat from orders where get_vat(amount) > 100; Функция может жить на уровне схемы или в пакете (тогда она должна быть в спецификации)...

4 дня назад
 • Вы подписаны

DUAL: что под капотом у самой популярной таблицы Oracle

Коллеги, всем привет! 👋 На связи Денис. Пожалуй, самая популярная таблица в мире Oracle. Каждый из нас писал select sysdate from dual сотни/тысячи раз. А вы когда-нибудь задумывались, что у неё под капотом? Давайте разберёмся. Что такое DUAL 🔹 Обычная таблица, владелец - SYS. Всем доступна через публичный синоним DUAL. 🔹 Одна колонка DUMMY типа VARCHAR2(1). 🔹 Одна строка со значением 'X'. Нужна она для одного: в Oracle SELECT без FROM был невозможен. А посчитать выражение, вызвать функцию или взять NEXTVAL из последовательности хочется...

1 неделя назад
 • Вы подписаны

🤝 Преемственность потоков: до этой идеи мы дошли не сразу

Коллеги, всем привет! 👋 На связи Денис. Интересная ситуация случилась на 8м потоке курса по оптимизации. Мне написал Саша С., студент 7 потока, довольно активный участник, который и раньше что-то предлагал. И закинул идею: а что, если кто-то из 7 потока придет и поприветствует 8й? Такая преемственность. Даже кандидатуру предложил. Я подумал: блин, а ведь классная идея. Как мы раньше не сообразили? Кстати, к слову сказать, это лишний раз показывает, что обратная связь нужна везде: в обучении, в управлении и так далее. С ее помощью можно улучшать свои процессы. Но философствовать на эту тему сейчас не буду...

1 неделя назад
 • Вы подписаны

Первая встреча уже сегодня

🔥 Коллеги, всем привет! 👋  Сегодня вечером стартует первая встреча потока по оптимизации Oracle SQL. Те, кто уже внутри, начинают прямо сейчас строить себе защиту от увольнения. А вы? Подумайте честно: что произойдет, когда прод ляжет из-за вашего неоптимального запроса? Это не страшилка и не теория. Я видел этот сценарий на реальных проектах - он разворачивается в командах каждую неделю. Медленный SQL - это не просто “страничка долго грузится”. Это таймауты, простой системы, потерянные деньги бизнеса...

1 неделя назад
 • Вы подписаны

“У меня на тесте всё летает!” или Главная иллюзия разработчика

🚀 Коллеги, всем привет! 👋  Знаете, что вы чаще всего можете услышать во время разбора инцидента по тормозящему запросу на продакшене? “Да у меня на тесте всё работает за 50 миллисекунд, я проверял!” Ну да, конечно работает. В тестовой базе 1000 строк, а на проде - 50 миллионов. На тесте один пользователь, а на проде - 500 одновременных сессий. И вот этот красивый запрос, который у вас “летал”, начинает разваливаться. Высокая конкуренция, ожидания => красный мониторинг => тикет в жире => ж.па в мыле. А дальше - классика жанра. Разработчик начинает всовывать dbms_output в код (это еще если повезет), добавлять индексы наугад и т...

Покупайте СтеллыИ дарите их за контент