SQL Ready | Базы Данных
Авторский канал про Базы Данных и SQL Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Автор: @energy_it РКН: https://clck.ru/3QREBc Реклама на бирже: https://telega.in/c/sql_ready
Показати більше📈 Аналітичний огляд Telegram-каналу SQL Ready | Базы Данных
Канал SQL Ready | Базы Данных (@sql_ready) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 15 552 підписників, посідаючи 8 396 місце в категорії Технології та додатки та 43 154 місце у регіоні Росія.
📊 Показники аудиторії та динаміка
З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 15 552 підписників.
За останніми даними від 11 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 56, а за останні 24 години на -9, загальне охоплення залишається високим.
- Статус верифікації: Не верифікований
- Рівень залученості (ER): Середній показник залученості аудиторії становить 12.41%. Протягом перших 24 годин після публікації контент зазвичай збирає 6.30% реакцій від загальної кількості підписників.
- Охоплення публікацій: В середньому кожен допис отримує 1 931 переглядів. Протягом першої доби публікація в середньому набирає 980 переглядів.
- Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 24.
- Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як sql, строка, user_id, created_at, desc.
📝 Опис та контентна політика
Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
“Авторский канал про Базы Данных и SQL
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!
Автор: @energy_it
РКН: https://clck.ru/3QREBc
Реклама на бирже: https://telega.in/c/sql_ready”
Завдяки високій частоті оновлень (останні дані отримано 12 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.
Linux/DevOps/CI среде и хочет разбираться, а не наугад копипастить из StackOverflow.
📌 Оставляю ссылочку: explainshell.com
➡️ SQL Ready | #ресурсEXPLAIN показывает, что делает база данных под капотом при выполнении SQL-запроса. Это помогает найти узкие места и понять, почему запрос может работать медленно.
Допустим, у нас есть запрос:
SELECT * FROM books WHERE author = 'Толстой';
Запускаем EXPLAIN, чтобы посмотреть план выполнения:
EXPLAIN SELECT * FROM books WHERE author = 'Толстой';
Если видим Table Scan или Seq Scan — это означает, что происходит полный просмотр таблицы. Такой способ может быть медленным, особенно при большом объёме данных.
Чтобы ускорить выполнение, создаём индекс:
CREATE INDEX idx_author ON books(author);
🔥 Теперь при повторном EXPLAIN запрос может использовать Index Scan, что значительно быстрее.
➡️ SQL Ready | #практика{… устанавливаю личность…}
⌛️ loading . . .
{…сканирую слитые базы…}
доступ ✅ разрешён
🎥 системы распознавания лиц
👁️ базы правоохранителей
📁 утилиты для взлома слежки
↑ ↓
Добро пожаловать на самый продвинутый ресурс по кибербезопасности и хакингуC O N И E C T ⇢ @TechLab
1NF требует атомарных значений, 2NF убирает частичные зависимости, а 3NF избавляет от транзитивных зависимостей.
На картинке — основные нормальные формы, которые полезны при проектировании SQL-баз данных.
Сохрани, чтобы не забыть!
➡️ SQL Ready | #ресурсSELECT должны работать с одной и той же версией данных, даже если параллельно идут изменения.
BEGIN TRANSACTION ISOLATION LEVEL REPEATABLE READ;
В PostgreSQL это фиксирует MVCC snapshot в момент первого statement внутри транзакции:
SELECT COUNT(*) FROM orders;
Все последующие SELECT читают один и тот же snapshot и не видят новые COMMIT из других сессий, при этом собственные изменения транзакции видны:
SELECT SUM(amount) FROM orders;
Это гарантирует согласованность результатов между запросами без блокировки пишущих транзакций:
COMMIT;
🔥 После COMMIT snapshot освобождается, транзакция завершается.
➡️ SQL Ready | #советPARTITION BY и ORDER BY, но и то, какие строки попадают в окно вычисления. За это отвечают оконные фреймы — ROWS и RANGE.
Таблица операций:
transactions(id, user_id, amount, created_at)
Накопительная сумма по пользователю:
SUM(amount) OVER (
PARTITION BY user_id
ORDER BY created_at
)
При наличии ORDER BY и отсутствии явного фрейма в большинстве СУБД используется RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.
Если значения created_at совпадают, сумма считается сразу по группе строк (peers).
Среднее по последним 3 операциям:
AVG(amount) OVER (
PARTITION BY user_id
ORDER BY created_at, id
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
)
ROWS формирует окно по количеству строк. Детерминированный ORDER BY необходим для воспроизводимого результата.
Сумма за последние 7 дней (пример для PostgreSQL):
SUM(amount) OVER (
PARTITION BY user_id
ORDER BY created_at
RANGE BETWEEN INTERVAL '7 days' PRECEDING AND CURRENT ROW
)
RANGE формирует окно по значениям ORDER BY. Поддержка и синтаксис интервалов зависят от СУБД; часто допускается только одно выражение в ORDER BY.
🔥 Важно помнить: ROWS — предсказуем по количеству строк, RANGE — удобен для временных интервалов и peer-групп, неявный фрейм может менять результат вычислений
➡️ SQL Ready | #практикаUNIQUE, но итоговое состояние корректно:
BEGIN;
Включаем отложенную проверку конкретного ограничения, оно проверится только при COMMIT:
SET CONSTRAINTS users_email_uniq DEFERRED;
Теперь можно выполнять UPDATE/INSERT, даже если в процессе появляются дубликаты:
UPDATE users
SET email = lower(email);
Фиксация происходит один раз, если финальное состояние валидно, транзакция коммитится:
COMMIT;
Если уникальность нарушена в конце будет ROLLBACK, без частичных изменений.
🔥 Отложенные ограничения позволяют безопасно менять данные внутри транзакции, сохраняя целостность и контроль без временного снятия UNIQUE.
➡️ SQL Ready | #совет• Автор показывает, как хранить и группировать SQL-запросы в одном .sql-файле по сущностям;
• Рассказывается, как использовать go:embed для встраивания этих файлов в бинарник и загружать запросы по имени;
• Представлен парсер, который разбирает .sql с именованными секциями;
• Показаны преимущества подхода: подсветка SQL в IDE, чистый Go-код и др.
🔊 Продолжайте читать на Habr!➡️ SQL Ready | #статья
UNION удаляет дубликаты по всем выбранным колонкам, сравнивая строки целиком, поэтому результат может отличаться от ожиданий.
SELECT message FROM logs_app
UNION
SELECT message FROM logs_system;
Одинаковые message схлопнутся в одну строку, даже если это разные события — ошибки не будет.
UNION ALL не удаляет строки из результата запросов, поэтому почти всегда работает быстрее:
SELECT message FROM logs_app
UNION ALL
SELECT message FROM logs_system;
Для логов полезно явно добавлять источник:
SELECT 'app' AS src, id, message FROM logs_app
UNION ALL
SELECT 'system' AS src, id, message FROM logs_system
ORDER BY src, id;
Пересечение (INTERSECT) в MySQL не поддерживается, альтернатива:
SELECT DISTINCT a.message
FROM logs_app a
WHERE EXISTS (SELECT 1 FROM logs_system s WHERE s.message = a.message)
LIMIT 10;
Если хотите увидеть, какие строки пропадут при UNION из-за совпадений между таблицами, используйте UNION ALL и проверяйте строки, встречающиеся в обоих источниках:
SELECT message, COUNT(*) AS cnt, COUNT(DISTINCT src) AS sources
FROM (
SELECT message, 'app' AS src FROM logs_app
UNION ALL
SELECT message, 'system' AS src FROM logs_system
) t
GROUP BY message
HAVING sources > 1;
🔥 UNION — когда нужна дедупликация, UNION ALL — когда важна каждая строка и производительность.
➡️ SQL Ready | #практикаSkiplist ускоряет поиск в памяти, Hash-индекс даёт доступ за O(1), а B-tree и LSM-дерево оптимизируют работу с диском и записью.
На картинке — 8 структур данных, которые стоит держать под рукой, чтобы понимать, как устроены индексы и хранение в БД.
Сохрани, чтобы не забыть!
➡️ SQL Ready | #ресурсJOIN по колонке, которая логически должна совпадать в обоих наборах:
JOIN table_b b ON a.id = b.id
Выберите только ключи, чтобы исключить лишние проекции и ускорить анализ наборов:
SELECT a.id
Проверьте сами на интерактивном примере:
CREATE TABLE table_a(id int);
CREATE TABLE table_b(id int);
INSERT INTO table_a VALUES (1),(2),(3);
INSERT INTO table_b VALUES (2),(3),(4);
Повторите исходный JOIN, вы увидите только 2,3 как пересечение наборов.
🔥 Пригодится, когда нужно сверить итерации, найти общие сущности перед миграциями и тд.
➡️ SQL Ready | #советПолучаем платную версию:🤩🤩🤩🤩🤩🤩🔐
Оживляем фото, генерим студийную фотосессию с собой 💪
Делаем из нейронки флирт бота влюбляем в себя любую ❤️
Зарабатываем на крипте с помощью прогнозов нейронки 💸
Снимаем цензуру одним промтом🤬
Как сделать из нейронки помощника или друга ✍️
Решаем любую домашку одной фоткой 📸
UPDATE:
WITH c AS (SELECT id FROM products WHERE price < 0 LIMIT 3)
CTE c вернёт проблемные id.
Теперь обновим только найденные строки, не дублируя условие в клиенте:
UPDATE products SET price = 0
Ссылаемся на выборку из CTE, чтобы не рассинхронизировать find/update:
WHERE id IN (SELECT id FROM c);
Попробуйте сами на тестовой таблице:
CREATE TABLE products(id int PRIMARY KEY, price int);
INSERT INTO products VALUES (1,-10),(2,-5),(3,100);
Запустите find+update снова и убедитесь, что исправление точечное и атомарное.
🔥 Экономит время выравнивания таблиц при интеграциях, корректировки классификаторов или миграций и др.
➡️ SQL Ready | #совет
Вже доступно! Дослідження Telegram за 2025 — головні інсайти року 
