Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥6❤4🤝3
Многие знают оконные функции, но редко задумываются:
ROWS строит окна по количеству строк, RANGE — по значению (например, времени). Сегодня в посте:
• Как работает ROWS BETWEEN … - окно по строкам.
• Как использовать RANGE BETWEEN INTERVAL … - окно по времени.
• Пример: получаем максимум за последний час в каждом временном срезе.
Этот подход раскрывает глубину SQL как языка временной аналитики и показывает работу с метриками.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤9👍8
Сегодня будем играть! База данных “задумывает” число от 1 до 10, а ты делаешь три попытки угадать его.
В задаче:
• Используем RANDOM() и FLOOR() для генерации числа;
• Проверяем догадки через CASE WHEN;
• Добавляем счётчик успехов, чтобы узнать, повезло ли на этот раз.
Так SQL превращается в мини-игру с логикой, состоянием и элементом удачи.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤17🔥10👍9
Если таблица огромная, а фильтр почти всегда одинаковый — зачем индексировать всё подряд?
Вместо обычного индекса создаём частичный (partial index):
CREATE INDEX ON orders (user_id)
WHERE status = 'pending';
Так индекс строится только для строк, где
status = 'pending'. Остальные записи не попадают, база хранит меньше, ищет быстрее.Теперь этот запрос:
SELECT * FROM orders
WHERE status = 'pending' AND user_id = 42;
🔥 Применяйте
partial index для активных заказов, незавершённых задач, непрочитанных сообщений. Там, где фильтр стабильно повторяется.Please open Telegram to view this post
VIEW IN TELEGRAM
👍16🤝8🔥7❤1
TRANSACTION ISOLATION LEVEL — управление конкурентным доступом!
Когда несколько транзакций работают с одними данными, возможны проблемы. Уровень изоляции определяет, насколько строго СУБД защищает данные от таких эффектов.
Пример настройки перед транзакцией (зависит от СУБД):
Основные Уровни:
🔥 Правильный уровень изоляции обеспечивает предсказуемость и надёжность даже при высокой конкуренции.
➡️ SQL Ready | #практика
Когда несколько транзакций работают с одними данными, возможны проблемы. Уровень изоляции определяет, насколько строго СУБД защищает данные от таких эффектов.
Пример настройки перед транзакцией (зависит от СУБД):
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
BEGIN;
SELECT * FROM accounts WHERE id = 1;
Основные Уровни:
READ UNCOMMITTED — минимальная защита, возможны «грязные» чтения:SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
READ COMMITTED — предотвращает грязные чтения, но допускает неповторяемые и фантомные:SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
REPEATABLE READ — одни и те же строки возвращают одинаковые значения в рамках транзакции (поведение с фантомами зависит от СУБД):SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
SERIALIZABLE — максимальная изоляция: транзакции выполняются так, будто идут строго последовательно.SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
🔥 Правильный уровень изоляции обеспечивает предсказуемость и надёжность даже при высокой конкуренции.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12👍7🤝7