В этой шпаргалке собраны ключевые функции и операторы MySQL для чтения, обновления, проверки и формирования JSON-структур. Материал охватывает извлечение значений, модификацию полей, работу с объектами и массивами, а также проверку вложенных данных. Подходит для хранения метаданных, гибких профилей и других полуструктурированных данных.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍12🤝6❤2
Возьмём последовательность обращений к ключам и с помощью SQL определим, какие из них “выжили” в памяти при ограниченном размере кэша.
Сегодня в задаче:
• Найдём последнее обращение к каждому ключу, определив его актуальность на момент завершения всех операций.
• Отсортируем элементы по “новизне” использования и применим ограничение capacity;
• Получим итоговое состояние LRU-кэша;
Такой подход позволяет анализировать поведение кэшей и логи обращений без процедурного кода.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤8🔥7🤝2
Как увидеть фрагментацию таблиц?
Часто производительность падает из-за накопления устаревших (dead) кортежей, которые остаются после
Посмотреть их реальный объём можно напрямую из системной статистики:
Чтобы быстро найти самые “раздутые” таблицы, отсортируем по dead-tup:
Хотите оценить степень фрагментации? Сравните dead/live в процентах:
🔥 Это позволяет быстро увидеть, где появляются накладные расходы на I/O и почему планы запроса деградируют.
➡️ SQL Ready | #совет
Часто производительность падает из-за накопления устаревших (dead) кортежей, которые остаются после
UPDATE/DELETE до следующего VACUUM.Посмотреть их реальный объём можно напрямую из системной статистики:
SELECT relname,
n_dead_tup,
n_live_tup
FROM pg_stat_all_tables
WHERE relname = 'orders';
n_dead_tup — количество устаревших кортежей, n_live_tup — актуальные строки.Чтобы быстро найти самые “раздутые” таблицы, отсортируем по dead-tup:
SELECT relname, n_dead_tup
FROM pg_stat_all_tables
ORDER BY n_dead_tup DESC
LIMIT 10;
Хотите оценить степень фрагментации? Сравните dead/live в процентах:
SELECT relname,
n_dead_tup,
n_live_tup,
round(100.0 * n_dead_tup / (n_live_tup + 1), 2) AS dead_ratio
FROM pg_stat_all_tables;
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍9❤8
Селективность определяет, сколько строк проходит через фильтр, и именно по этому показателю оптимизатор выбирает план запроса.
Сегодня в гайде:
• Как селективность влияет на выбор плана;
• Почему один и тот же запрос может работать по-разному на разных данных;
• Как устаревшая статистика приводит к “не тем” решениям оптимизатора.
Эта тема, помогает понимать реальные причины поведения плана.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤7🔥7🤝1
QUALIFY: фильтрация после оконных функций!
Иногда нужно фильтровать строки после вычисления оконных функций. В большинстве диалектов SQL для этого нужен подзапрос, но в ряде СУБД (Snowflake, BigQuery, Teradata, Oracle 23c) есть конструкция
Отбираем строки только с первым местом внутри категории:
Фильтруем строки, где разница с предыдущим значением больше 50:
Оставляем топ-3 самых больших заказов каждого клиента:
🔥
➡️ SQL Ready | #практика
Иногда нужно фильтровать строки после вычисления оконных функций. В большинстве диалектов SQL для этого нужен подзапрос, но в ряде СУБД (Snowflake, BigQuery, Teradata, Oracle 23c) есть конструкция
QUALIFY, позволяющая делать это напрямую.Отбираем строки только с первым местом внутри категории:
SELECT id, category, score,
RANK() OVER (
PARTITION BY category
ORDER BY score DESC
) AS rnk
FROM results
QUALIFY rnk = 1;
Фильтруем строки, где разница с предыдущим значением больше 50:
SELECT id, value,
value - LAG(value) OVER (
ORDER BY id
) AS diff_prev
FROM metrics
QUALIFY diff_prev > 50;
Оставляем топ-3 самых больших заказов каждого клиента:
SELECT customer_id, order_id, amount,
ROW_NUMBER() OVER (
PARTITION BY customer_id
ORDER BY amount DESC
) AS rn
FROM orders
QUALIFY rn <= 3;
QUALIFY помогает писать чище и короче, избавляя от лишних подзапросов. Особенно полезен в аналитических задачах с большим числом оконных функций.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍9❤7🤝1
Эта шпаргалка охватывает наиболее используемые функции PostgreSQL для получения текущего времени, извлечения компонентов дат, расчета интервалов, округления временных меток и преобразования Unix-времени. Подходит для разработки систем, где критична точная и предсказуемая работа с временными значениями.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤14🔥8👍7🤝2