MERGE: атомарная вставка или обновление!
Оператор
Создаём таблицу:
Подготавливаем входящие данные с помощью
Здесь мы формируем набор входных данных, который будет использован оператором
Теперь выполняем
Операция выполняется одной DML-командой, что исключает необходимость выполнять отдельный
Проверяем результат:
🔥 Пример выше предназначен для
➡️ SQL Ready | #практика
Оператор
MERGE позволяет реализовать обновление данных и вставку новых записей в рамках одной операции. Это особенно важно при обработке данных, поступающих из внешних систем, где часть ключей может совпадать, а часть — быть новыми.Создаём таблицу:
CREATE TABLE clients (
id NUMBER PRIMARY KEY,
name VARCHAR2(200) NOT NULL,
email VARCHAR2(200) UNIQUE NOT NULL,
updated_at DATE DEFAULT SYSDATE NOT NULL
);
Подготавливаем входящие данные с помощью
CTE:WITH incoming AS (
SELECT 10 AS id,
'Ivan Petrov' AS name,
'ivan@example.com' AS email
FROM dual
)
Здесь мы формируем набор входных данных, который будет использован оператором
MERGE как источник.Теперь выполняем
MERGE, используя CTE как таблицу-источник:MERGE INTO clients c
USING incoming i
ON (c.id = i.id)
WHEN MATCHED THEN
UPDATE SET
c.name = i.name,
c.email = i.email,
c.updated_at = SYSDATE
WHEN NOT MATCHED THEN
INSERT (id, name, email, updated_at)
VALUES (i.id, i.name, i.email, SYSDATE);
Операция выполняется одной DML-командой, что исключает необходимость выполнять отдельный
SELECT.Проверяем результат:
SELECT * FROM clients WHERE id = 10;
Oracle. Оператор MERGE также поддерживается в SQL Server, DB2, Snowflake, BigQuery и PostgreSQL 15+. Синтаксис в разных СУБД может отличаться.Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤7🤝7
Когда продукт недоступен, каждая минута стоит денег: падают заказы, транзакции не проходят, пользователи уходят.
Сегодня в задаче:
• Выделим непрерывные последовательности ошибок, чтобы отделить реальные инциденты от разовых сбоев.
• Посчитаем длительность каждого инцидента на основе временных меток, получим время недоступности сервиса.
• Оценим финансовый ущерб, умножив длительность простоя на среднюю выручку в минуту”.
Отчет позволяет не просто зафиксировать сбои, но и посчитать ущерб от каждого окна простоя.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤11👍9🔥7🤝2
Нужно понять, какие строки изменились с прошлого дня?
Не обязательно хранить историю, можно сравнить сами строки по хешу.
Соберем все поля строки в единый структурированный объект:
И посчитаем хеш от всей строки:
Теперь можно сравнить два снапшота:
Если нужно показать, что именно изменилось, добавьте JSON-представление строки:
🔥 Работает на разных объёмах данных без транзакционных логов.
➡️ SQL Ready | #совет
Не обязательно хранить историю, можно сравнить сами строки по хешу.
Соберем все поля строки в единый структурированный объект:
row(id, email, status, updated_at)
И посчитаем хеш от всей строки:
md5(row(... )::text)
Теперь можно сравнить два снапшота:
SELECT u_new.id
FROM users_new u_new
JOIN users_old u_old ON u_old.id = u_new.id
WHERE md5(row(u_new.*)::text) <> md5(row(u_old.*)::text);
Если нужно показать, что именно изменилось, добавьте JSON-представление строки:
row_to_json(u_new.*)
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥9❤7🤝2
Шпаргалка по основным функциям для приведения типов, изменения кодировок, форматирования чисел и дат, а также построения условных выражений. Эти инструменты используются при нормализации входных данных, подготовке результатов для отображения и создании гибкой логики внутри SQL-запросов.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥14❤8👍8🤝3
This media is not supported in your browser
VIEW IN TELEGRAM
Он предлагает пошаговые уроки, которые помогают разобраться в основах работы с базами данных, научиться писать запросы и уверенно применять знания на практике.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10❤8🤝5👍3
Когда фильтры задействуют несколько индексов,
Index Scan может работать неэффективно. Bitmap Scan объединяет результаты этих индексов и читает только нужные страницы.Сегодня в гайде:
• Как bitmap объединяет несколько индексов;
• Что означает BitmapAnd в плане выполнения;
• Почему эта техника ускоряет сложные фильтры на больших таблицах.
Прием позволяет эффективно обрабатывать сложные фильтры и стабильно работать с большими таблицами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤10🔥9