insert ... on conflict позволяет вставить данные и одновременно обработать дубликаты без дополнительных проверок. Если запись уже существует, то выполняется обновление, если нет - добавляется новая.Сегодня в посте:
• Как работает on conflict и псевдотаблица excluded;
• Как обновлять только изменившиеся поля;
• Как писать лаконичные и надёжные операции без лишних запросов.
Всё происходит атомарно, в одном шаге и без лишней логики на стороне приложения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤11🔥9👎1
🔥13❤6👍6🤝1
В этой шпаргалке собраны основные команды языка определения данных, используемые для создания, изменения и удаления объектов базы данных: таблиц, столбцов, индексов и других элементов структуры. Они формируют архитектуру базы и позволяют гибко управлять её схемой. Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18❤6🔥6
Индекс по выражению — ускоряй запросы без изменения схемы!
Часто запросы не используют индекс, хотя поле индексировано.
Причиной может быть функция в условии:
Даже если email проиндексирован, lower(email) ломает возможность использовать индекс.
Вариант решения - индекс по выражению (expression index):
Проверить можно через план запроса:
🔥 Теперь в плане
➡️ SQL Ready | #совет
Часто запросы не используют индекс, хотя поле индексировано.
Причиной может быть функция в условии:
SELECT * FROM users WHERE lower(email) = 'admin@example.com';
Даже если email проиндексирован, lower(email) ломает возможность использовать индекс.
Вариант решения - индекс по выражению (expression index):
CREATE INDEX users_lower_email_idx
ON users ((lower(email)));
Проверить можно через план запроса:
EXPLAIN ANALYZE
SELECT * FROM users WHERE lower(email) = 'admin@example.com';
🔥 Теперь в плане
Index Scan, а не Full Table Scan.Please open Telegram to view this post
VIEW IN TELEGRAM
👍14❤7🔥7👎1
В SQL нет привычных циклов, но есть полезные инструменты, которые позволяют строить повторяющиеся структуры (например, таблицу умножения 10×10).
Сегодня в посте:
• Генерируем числа от 1 до 10 с помощью GENERATE_SERIES();
• Объединяем их в пары через CROSS JOIN;
• Считаем произведения и форматируем результат в матрицу.
Такой приём не просто игра: его используют для генерации тестовых данных, создания временных сеток, расчёта комбинаций или аналитических карт.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥10❤7
В ПОГОНЕ ЗА ИНФОРМАЦИЕЙ - ТЫ МОЖЕШЬ СТАТЬ НОВОЙ ИНФОРМАЦИЕЙ🇷🇺
Список несогласных ниже:
hck wrr – расскажут, почему ты сам себя продаешь властям, если кормишь сайт печеньем.
scr snk – новостной кибер-без. Ты просто в курсе интернет-угоз и событий индустрии.
insc lrd – скачиваемый оффлайн википедик от всех кибер-тараканов.
Дальше ты сам!
Список несогласных ниже:
hck wrr – расскажут, почему ты сам себя продаешь властям, если кормишь сайт печеньем.
scr snk – новостной кибер-без. Ты просто в курсе интернет-угоз и событий индустрии.
insc lrd – скачиваемый оффлайн википедик от всех кибер-тараканов.
Дальше ты сам!
Please open Telegram to view this post
VIEW IN TELEGRAM
👎4❤1🔥1