Нужно понять, какие строки изменились с прошлого дня?
Не обязательно хранить историю, можно сравнить сами строки по хешу.
Соберем все поля строки в единый структурированный объект:
И посчитаем хеш от всей строки:
Теперь можно сравнить два снапшота:
Если нужно показать, что именно изменилось, добавьте 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
Хотите найти дубликаты по нескольким полям и оставить только самые свежие или правильные записи?
Используйте оконную функцию
которые должны быть уникальны:
Первая строка в группе
Все остальные - реальные дубликаты, которые можно чистить.
Чтобы увидеть только те строки, которые должны быть удалены:
🔥 Подходит для очистки данных, поиска дубликатов, контроля миграций и проверки внешних интеграций.
➡️ SQL Ready | #совет
Используйте оконную функцию
ROW_NUMBER() по ключам,которые должны быть уникальны:
ROW_NUMBER() OVER (
PARTITION BY email, phone
ORDER BY updated_at DESC
)
Первая строка в группе
(dup_rank = 1) - оригинал.Все остальные - реальные дубликаты, которые можно чистить.
Чтобы увидеть только те строки, которые должны быть удалены:
SELECT *
FROM (
SELECT *, ROW_NUMBER() OVER (
PARTITION BY email, phone ORDER BY updated_at DESC
) AS dup_rank
FROM users
) t
WHERE dup_rank > 1;
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍15❤8🤝1
В этой шпаргалке собраны ключевые функции и операторы 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