uk
Feedback
SQL Ready | Базы Данных

SQL Ready | Базы Данных

Відкрити в Telegram

Авторский канал про Базы Данных и SQL Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Автор: @energy_it РКН: https://clck.ru/3QREBc Реклама на бирже: https://telega.in/c/sql_ready

Показати більше

📈 Аналітичний огляд Telegram-каналу SQL Ready | Базы Данных

Канал SQL Ready | Базы Данных (@sql_ready) у мовному сегменті Російська є активним учасником. На даний момент спільнота об'єднує 15 560 підписників, посідаючи 8 395 місце в категорії Технології та додатки та 43 172 місце у регіоні Росія.

📊 Показники аудиторії та динаміка

З моменту свого створення невідомо, проект продемонстрував стрімке зростання, зібравши аудиторію у 15 560 підписників.

За останніми даними від 10 червня, 2026, канал демонструє стабільну активність. Хоча за останні 30 днів спостерігається зміна кількості учасників на 57, а за останні 24 години на -8, загальне охоплення залишається високим.

  • Статус верифікації: Не верифікований
  • Рівень залученості (ER): Середній показник залученості аудиторії становить 11.95%. Протягом перших 24 годин після публікації контент зазвичай збирає 6.07% реакцій від загальної кількості підписників.
  • Охоплення публікацій: В середньому кожен допис отримує 1 860 переглядів. Протягом першої доби публікація в середньому набирає 945 переглядів.
  • Реакції та взаємодія: Аудиторія активно підтримує контент: середня кількість реакцій на один пост – 25.
  • Тематичні інтереси: Контент зосереджений навколо ключових тем, таких як sql, строка, user_id, created_at, desc.

📝 Опис та контентна політика

Автор описує ресурс як майданчик для висловлення суб'єктивної думки:
Авторский канал про Базы Данных и SQL Ресурсы, гайды, задачи, шпаргалки. Информация ежедневно пополняется! Автор: @energy_it РКН: https://clck.ru/3QREBc Реклама на бирже: https://telega.in/c/sql_ready

Завдяки високій частоті оновлень (останні дані отримано 11 червня, 2026), канал підтримує актуальність та високий рівень охоплення публікацій. Аналітика показує, що аудиторія активно взаємодіє з контентом, що робить його важливою точкою впливу в категорії Технології та додатки.

15 560
Підписники
-824 години
+357 днів
+5730 день

Триває завантаження даних...

Схожі канали
Немає даних
Виникли проблеми? Будь ласка, оновіть сторінку або зверніться до нашого support-менеджера.
Вхідні та вихідні згадування
---
---
---
---
---
---
Залучення підписників
червень '26
червень '26
+162
в 18 каналах
травень '26
+73
в 30 каналах
Get PRO
квітень '26
+138
в 31 каналах
Get PRO
березень '26
+315
в 66 каналах
Get PRO
лютий '26
+246
в 22 каналах
Get PRO
січень '26
+1 259
в 127 каналах
Get PRO
грудень '25
+565
в 121 каналах
Get PRO
листопад '25
+1 800
в 273 каналах
Get PRO
жовтень '25
+1 107
в 100 каналах
Get PRO
вересень '25
+1 637
в 109 каналах
Get PRO
серпень '25
+1 628
в 240 каналах
Get PRO
липень '25
+1 154
в 53 каналах
Get PRO
червень '25
+1 368
в 87 каналах
Get PRO
травень '25
+2 597
в 331 каналах
Get PRO
квітень '25
+15
в 1 каналах
Get PRO
березень '25
+13
в 0 каналах
Get PRO
лютий '25
+28
в 0 каналах
Get PRO
січень '25
+26
в 1 каналах
Get PRO
грудень '24
+18
в 1 каналах
Get PRO
листопад '24
+73
в 5 каналах
Get PRO
жовтень '24
+2 310
в 253 каналах
Get PRO
вересень '24
+2 772
в 270 каналах
Дата
Залучення підписників
Згадування
Канали
11 червня0
10 червня+1
09 червня+2
08 червня+7
07 червня+12
06 червня+46
05 червня0
04 червня+3
03 червня0
02 червня+3
01 червня+88
Дописи каналу
🐱 SQL, MySQL и PostgreSQL — один из лучших материалов для изучения баз данных! Это обучающий материал с теорией, объяснениями и практическими задачами. Здесь разбираются устройство баз данных, связи между таблицами, индексы, нормализация, проектирование схем и многое др. Большой акцент сделан на понимании того, как правильно проектировать бд и решать задачи, которые часто встречаются на собеседованиях и в работе.
Оставляю ссылочку: GitHub 📱
➡️ SQL Ready | #репозиторий

2
Почему CHECK constraint может пропустить неправильные данные из-за NULL! Редкая, но неприятная ловушка SQL: многие думают, что CHECK constraint требует, чтобы условие всегда было TRUE. Но это не так, CHECK запрещает только FALSE. А результат UNKNOWN — пропускается. Именно поэтому nullable-колонки внутри CHECK могут вести себя не так, как ожидает разработчик. Допустим, есть таблица товаров: products( id, price, discount ) Хотим запретить скидку больше цены: ALTER TABLE products ADD CONSTRAINT chk_discount_price CHECK (discount <= price); На первый взгляд всё выглядит правильно. Теперь такой INSERT действительно не пройдёт: INSERT INTO products(id, price, discount) VALUES (1, 100, 150); Потому что проверка: 150 <= 100 даёт FALSE. А CHECK constraint запрещает строки, где выражение возвращает FALSE. Но дальше начинается важный нюанс SQL и трёхзначной логики. Вот такой INSERT уже может пройти: INSERT INTO products(id, price, discount) VALUES (2, 100, NULL); И такой тоже: INSERT INTO products(id, price, discount) VALUES (3, NULL, 50); Многие ожидают, что CHECK отклонит такие строки. Но SQL работает иначе, если в сравнении участвует NULL, результатом становится не TRUE и не FALSE, а: UNKNOWN То есть: 150 <= 100 -- FALSE NULL <= 100 -- UNKNOWN 50 <= NULL -- UNKNOWN NULL <= NULL -- UNKNOWN И вот здесь самая важная мысль: CHECK constraint считает строку валидной, если результат выражения — TRUE или UNKNOWN. Запрещается только явно FALSE. Это поведение связано с SQL three-valued logic — логикой с тремя состояниями: TRUE, FALSE и UNKNOWN. Именно поэтому CHECK сам по себе НЕ заменяет NOT NULL. Если колонка обязательная — это нужно указывать отдельно. Правильный вариант: CREATE TABLE products( id bigint PRIMARY KEY, price numeric NOT NULL, discount numeric NOT NULL, CONSTRAINT chk_discount_price CHECK (discount <= price) ); Теперь NULL уже не сможет пройти, потому что NOT NULL сработает раньше CHECK. Но в реальных системах скидка часто может отсутствовать. То есть NULL — это нормальное состояние: скидки нет. В таком случае constraint лучше писать явно и читаемо: ALTER TABLE products ADD CONSTRAINT chk_discount_price CHECK ( discount IS NULL OR discount <= price ); Такой вариант намного понятнее при чтении схемы. Он явно показывает бизнес-логику: либо скидки нет, либо она не больше цены. Но здесь есть ещё один тонкий момент. Если price остаётся nullable: price numeric, то выражение: discount <= price снова может вернуть UNKNOWN. Например: discount = 50 price = NULL Результат проверки: 50 <= NULL, будет UNKNOWN, а строка снова станет валидной. Поэтому если цена обязательна — нужен отдельный NOT NULL: price numeric NOT NULL Похожая ситуация встречается с датами. Например: CHECK (end_date >= start_date) Разработчик может думать, что constraint гарантирует корректный диапазон дат. Но если end_date nullable, такой CHECK спокойно пропускает: end_date = NULL потому что результат сравнения снова UNKNOWN. И это может быть абсолютно нормальным поведением. Например, если NULL означает: период ещё не завершён. Но если обе даты обязательны, это нужно фиксировать явно: start_date date NOT NULL, end_date date NOT NULL, CHECK (end_date >= start_date) 🔥 Вывод: если в CHECK участвуют nullable-поля, constraint может пропускать строки из-за UNKNOWN, CHECK не заменяет NOT NULL. Для обязательных значений всегда нужен отдельный NOT NULL constraint. ➡️ SQL Ready | #практика
883
3
Замечал странную штуку: дел не так уж много, но любое – как будто через сопротивление? Не то чтобы лень. Просто не делается и
Замечал странную штуку: дел не так уж много, но любое – как будто через сопротивление? Не то чтобы лень. Просто не делается и все тут! Зато видосики на Ютубе залетают на ура... Попался годный канал, советую почитать, если тоже чувствуешь, что превращаешься в апатичного зомби 👉 https://t.me/vadimpetrovpsi Мысль, которая зашла: когда перестаешь понимать "чего хочу Я", даже нормальная жизнь ощущается, как каторга. Подписывайся сюда и переходи в закреп. Там 3 видоса, которые помогут разобраться, что с тобой происходит и как снова начать испытывать ощущение, что ты живешь, а не существуешь 💃
1 041
4
🧐 SQL Tutorial — подробный гайд по SQL с примерами! На сайте собрано множество обучающих материал по SQL: от базовых запросо
🧐 SQL Tutorial — подробный гайд по SQL с примерами! На сайте собрано множество обучающих материал по SQL: от базовых запросов SELECT и WHERE до JOIN, подзапросов, функций, сортировки и работы с таблицами. Всё объясняется простым языком с примерами запросов и постепенным усложнением тем, поэтому материал подойдёт как новичкам, так и тем, кто хочет систематизировать знания по бд. 📌 Оставляю ссылочку: ravesli.com ➡️ SQL Ready | #ресурс
1 116
5
PostgreSQL умеет пропускать заблокированные строки без ожидания! Большинство знают SKIP LOCKED только для очередей через SELE
PostgreSQL умеет пропускать заблокированные строки без ожидания! Большинство знают SKIP LOCKED только для очередей через SELECT ... FOR UPDATE. Но мало кто использует его для параллельной пакетной обработки внутри PostgreSQL. Если несколько воркеров одновременно обрабатывают огромную таблицу задач: SELECT id FROM jobs WHERE processed = false FOR UPDATE; Без SKIP LOCKED процессы начинают ждать друг друга даже при наличии свободных строк. PostgreSQL позволяет просто пропускать уже занятые записи: SELECT id FROM jobs WHERE processed = false FOR UPDATE SKIP LOCKED; Теперь каждый воркер мгновенно получает только свободные строки без ожидания и конфликтов. Это можно встроить прямо в UPDATE: WITH cte AS ( SELECT id FROM jobs WHERE processed = false LIMIT 100 FOR UPDATE SKIP LOCKED ) UPDATE jobs SET processed = true WHERE id IN (SELECT id FROM cte); Получается параллельная обработка на уровне PostgreSQL без внешних систем очередей. 🔥 Аналогично строят высоконагруженные фоновые обработчики, обработку писем, биллинг и массовые пакетные операции. ➡️ SQL Ready | #совет
1 152
6
👨👨👨👨👨👨👨👨👨👨 Каналы с IT вакансиями и стажировками Подписывайся и забирай свой оффер 🤘 1. Стажировки и вакансии по Р
👨👨👨👨👨👨👨👨👨👨 Каналы с IT вакансиями и стажировками Подписывайся и забирай свой оффер 🤘 1. Стажировки и вакансии по России и миру 2. IT вакансии по СНГ 3. IT стажировки по СНГ 4. ИИ-ассистент для автооткликов 5. IT стажировки и волонтерства 6. IT стажировки в топовых компаниях мира 7. Удалённые IT вакансии и стажировки 8. Python вакансии и стажировки 9. БИГТЕХ вакансии и стажировки 10. Design вакансии и стажировки 11. QA вакансии и стажировки 12. Junior вакансии и стажировки 13. Frontend вакансии и вопросы собесов 14. Вакансии и стажировки для аналитиков 15. Вакансии в русских стартапах за границей 16. Вакансии и стажировки для DevOps 17. Вакансии, которых нет на ХХ.РУ
1 231
7
📂 Напоминалка по шардингу баз данных! Например, шардинг по диапазону распределяет данные по определённым диапазонам значений
📂 Напоминалка по шардингу баз данных! Например, шардинг по диапазону распределяет данные по определённым диапазонам значений, а шардинг по хэшу помогает равномерно распределять нагрузку между серверами. На картинке — основные стратегии шардинга и маршрутизации запросов, которые используются в распределённых базах данных и высоконагруженных системах. Сохрани, чтобы не потерять! ➡️ SQL Ready | #ресурс
1 466
8
Антиджойн в SQL — как находить отсутствующие связи! Одна из самых частых задач в аналитике — найти строки, для которых не существует связанных данных. Например, пользователей без заказов или товары без продаж. Таблицы: users(id, email) orders(id, user_id) Многие пытаются писать через NOT IN: id="x8d2qa" SELECT * FROM users WHERE id NOT IN ( SELECT user_id FROM orders ); Но здесь есть проблема: если подзапрос вернёт хотя бы один NULL, результат может стать пустым. Причина — логика NULL в SQL ломает сравнение NOT IN. Решением может служить антиджойн через NOT EXISTS: id="m4z7pk" SELECT * FROM users u WHERE NOT EXISTS ( SELECT 1 FROM orders o WHERE o.user_id = u.id ); SQL проверяет отсутствие связанной строки и сразу останавливается при первом совпадении. Ту же задачу можно решить через LEFT JOIN: id="f1q9vc" SELECT u.* FROM users u LEFT JOIN orders o ON o.user_id = u.id WHERE o.id IS NULL; LEFT JOIN оставляет все строки users, а WHERE o.id IS NULL отбирает только те, где совпадений не нашлось. Этот паттерн и называется антиджойн — верни строки, для которых связи не существует. Особенно полезно это в проверках целостности данных: id="k6n2yb" SELECT * FROM orders o WHERE NOT EXISTS ( SELECT 1 FROM users u WHERE u.id = o.user_id ); Так можно быстро найти битые записи с отсутствующими foreign key. 🔥 Антиджойны пригодятся в аналитике, ETL, аудитах данных и поиске проблемных связей между таблицами. ➡️ SQL Ready | #практика
1 917
9
40 собесов и оффер за 1 месяц Алексей разработчик. Искал работу с декабря - написание сопроводов и отклики занимали очень мно
40 собесов и оффер за 1 месяц Алексей разработчик. Искал работу с декабря - написание сопроводов и отклики занимали очень много времени. Выхлоп - почти нулевой. В какой-то момент понял: так можно искать бесконечно. И по совету друга попробовал ии-ассистента Софи. ▫️За ~1 месяц прошел около 40 собеседований ▫️Получил оффер с вакансии, на которую, по его словам, не откликнулся бы сам В описании она выглядела скучно, а по факту - одна из самых интересных компаний, с которыми я общался. Весь процесс - от первого собеседования до оффера - занял 4 дня. P.S. Попробовать Софи бесплатно можно будет 16 июня. Не пропусти анонс здесь.
1 116
10
✍️ PostgreSQL Querying — практическое изучение SQL на PostgreSQL! Здесь подробно разбираются запросы, работа с данными, фильт
✍️ PostgreSQL Querying — практическое изучение SQL на PostgreSQL! Здесь подробно разбираются запросы, работа с данными, фильтрация, JOIN’ы, агрегации и другие конструкции, которые постоянно используются в разработке. Материал подаётся последовательно и на примерах, поэтому намного проще понять логику запросов и научиться писать их самостоятельно. Оставляю ссылочку: GitHub 📱 ➡️ SQL Ready | #репозиторий
1 687
11
NOT VALID constraints — как добавить CHECK и FOREIGN KEY на huge таблицу без долгой блокировки? Обычно добавление CHECK или F
NOT VALID constraints — как добавить CHECK и FOREIGN KEY на huge таблицу без долгой блокировки? Обычно добавление CHECK или FOREIGN KEY на большую таблицу рискованная операция, потому что PostgreSQL начинает сразу сканировать все старые данные. ALTER TABLE orders ADD CONSTRAINT orders_user_fk FOREIGN KEY (user_id) REFERENCES users(id); На production-таблицах в сотни строк это может превратиться в очень долгую блокировку DDL. Но в PostgreSQL есть фича — NOT VALID: ALTER TABLE orders ADD CONSTRAINT orders_price_check CHECK (price > 0) NOT VALID; Без полного сканирования таблицы, сразу начинает проверять все новые записи. При этом старые строки пока не валидируются. Позже ограничение можно провалидировать отдельно: ALTER TABLE orders VALIDATE CONSTRAINT orders_price_check; Самое интересное — VALIDATE CONSTRAINT не блокирует обычный concurrent DML как классический ALTER TABLE. То же самое работает и для FOREIGN KEY: ALTER TABLE orders ADD CONSTRAINT orders_user_fk FOREIGN KEY (user_id) REFERENCES users(id) NOT VALID; 🔥 Это одна из самых полезных возможностей PostgreSQL для безопасных миграций, постепенного внедрения ограничений и наведения порядка в старых базах без длительного простоя. ➡️ SQL Ready | #совет
1 672
12
Взял заказ. Собрал бота. Агентство получило 15 000 рублей. Пока ты ждёшь лучшую вакансию в своём городе — Владислав Пурвиньш закрывает заказы на чат-ботов силами учеников. (Заказов сейчас висит в поиске 10 786 запросов). Каждый получает от 15 000 рублей за заказ. Которые даже не шарят в коде. Просто научились одному инструменту. И бизнесы платят им 200-250 000 рублей в месяц. Схема простая: берёшь реальный заказ из базы → собираешь бота по шаблону → наставник проверяет → сдаёшь и забираешь деньги. Старт 70-80 000 рублей. С опытом от 200 000 рублей в месяц. Запусти бота, там пошаговый план как в 2026 году зарабатывать как нефтяник, только с ноута. 👉 @other_digital_bot Обучение проходит официально — Владислав Пурвиньш имеет образовательную лицензию.
1 195
13
❤️ PostgreSQL Tutorial — подробная документация и учебник по PostgreSQL! На сайте собрана большая база материалов по PostgreS
❤️ PostgreSQL Tutorial — подробная документация и учебник по PostgreSQL! На сайте собрана большая база материалов по PostgreSQL: установка, настройка, SQL-запросы, работа с таблицами, индексами, функциями, транзакциями и администрированием базы данных. Материал подаётся последовательно. Отличный ресурс как для новичков, так и для разработчиков, которым нужен удобный справочник с примерами и практическими объяснениями. 📌 Оставляю ссылочку: postgresql.leopard.in.ua ➡️ SQL Ready | #ресурс
2 261
14
🖥 Разбираем методы управления пользователями и правами! В этой шпаргалке собраны ключевые команды для создания, изменения и+4
🖥 Разбираем методы управления пользователями и правами! В этой шпаргалке собраны ключевые команды для создания, изменения и удаления пользователей, назначения и отзыва прав, а также проверки текущих ролей и сессий. Они применяются при управлении безопасностью базы данных, настройке доступа и аналитической работе с ролями. ➡️ SQL Ready | #шпора
2 648
15
🖥 Стажировки и вакансии для SQL разработчиков и администраторов. - Вакансии которых нет на джоб-агрегаторах - Только прямые
🖥 Стажировки и вакансии для SQL разработчиков и администраторов. - Вакансии которых нет на джоб-агрегаторах - Только прямые контакты HR в Telegram 👉 @jobs_sql 🤖 ML & DS 👩‍💻 DevOps 👨‍✈️ ИБ & OSINT 👣 Go 👩‍💻 Mobile 👩‍💻 C# 👩‍💻 Node.js 👩‍💻 Python 🔎 QA 👩‍💻 Java 👩‍💻 UX/UI 👩‍💻 Frontend 🖼️ PHP 📋 Analyst 💼 1C 🖥 SQL 👩‍💻 IT HR Пока другие листают джоб-сайты — ты уже пишешь HR в Telegram.
983
16
✍️ Информативная статья вышла на Хабре: «Обратная сторона массивов в PostgreSQL»! В этой статье: • Разбирается, почему массив
✍️ Информативная статья вышла на Хабре: «Обратная сторона массивов в PostgreSQL»! В этой статье: • Разбирается, почему массивы в PostgreSQL — это отдельная модель хранения со своими ограничениями и компромиссами; • Показываются скрытые проблемы массивов: потеря ссылочной целостности, особенности GIN-индексов, TOAST, MVCC и дорогостоящие обновления; • Объясняется, как правильно работать с массивами, когда использовать JSONB, intarray, pgvector и в каких случаях массивы действительно оправданы. 🔊 Продолжайте читать на Habr! ➡️ SQL Ready | #статья
2 122
17
PostgreSQL умеет обновлять только реально изменившиеся строки и это может сильно сократить WAL и нагрузку! Многие приложения
PostgreSQL умеет обновлять только реально изменившиеся строки и это может сильно сократить WAL и нагрузку! Многие приложения делают UPDATE даже тогда, когда данные вообще не изменились. UPDATE users SET name = 'Alex' WHERE id = 1; Даже если name уже равен 'Alex', PostgreSQL всё равно создаст новую версию строки (MVCC), запишет WAL, обновит индексы и увеличит нагрузку на autovacuum. Проверить это можно через системную статистику: SELECT n_tup_upd FROM pg_stat_user_tables WHERE relname = 'users'; Чтобы избежать “пустых” UPDATE, можно сравнивать старые и новые значения прямо в WHERE: UPDATE users SET name = $1, email = $2 WHERE id = $3 AND (name, email) IS DISTINCT FROM ($1, $2); IS DISTINCT FROM безопасно сравнивает даже NULL значения, в отличие от обычного !=: SELECT NULL = NULL, NULL IS DISTINCT FROM NULL; На highload-системах это может заметно уменьшить WAL, bloat, количество HOT/non-HOT update и нагрузку на autovacuum без изменения архитектуры. ➡️ SQL Ready | #совет
2 023
18
🎓 PostgreSQL должен быть спроектирован до первого инцидента. В enterprise-среде PostgreSQL — это уже не просто база данных,
🎓 PostgreSQL должен быть спроектирован до первого инцидента. В enterprise-среде PostgreSQL — это уже не просто база данных, а часть критичной инфраструктуры с требованиями к доступности, восстановлению, безопасности и мониторингу. На курсе «Архитектура PostgreSQL для корпоративных систем» разбираем, как строить устойчивую PostgreSQL-инфраструктуру под реальные корпоративные нагрузки. 📌 В фокусе курса: • High Availability (высокая доступность) • Disaster Recovery (аварийное восстановление) • failover-сценарии • RPO/RTO • резервирование и мониторинг • архитектурные ошибки и точки отказа 🐾 АИСыч напоминает: б бы «Backup — это не стратегия. Стратегия — это проверенное восстановление». На курсе отдельно разбираем, как проектировать PostgreSQL-инфраструктуру так, чтобы система переживала сбои без потери критичных данных. 🎁 Для наших подписчиков действует скидка 20% по промокоду: SQLREADY20 Записаться на курс прямо сейчас А ещё больше практики, ИИ и ИБ — в MAX Академии, где сейчас проходит розыгрыш курса за 1 рубль 🔥 Реклама АНО ДПО ЦПК "АИС", ИНН: 7720346012, erid: 2SDnjdvRDWz
1 674
19
😎 SQL Cheatsheet — удобная шпаргалка для повседневной работы! Этот репозиторий хорошо подойдёт тем, кто постоянно работает с
😎 SQL Cheatsheet — удобная шпаргалка для повседневной работы! Этот репозиторий хорошо подойдёт тем, кто постоянно работает с базами данных и хочет быстро освежать в памяти нужные SQL-конструкции. Здесь всё подано компактно и по делу: запросы, JOIN’ы, агрегации, подзапросы и др. Особенно удобно использовать для подготовки к собеседованиям. Оставляю ссылочку: GitHub 📱 ➡️ SQL Ready | #репозиторий
1 618
20
Почему индекс может не использоваться, даже если он есть! Очень частая ситуация: индекс создан, запрос написан вроде нормально, но SQL всё равно делает Seq Scan или Full Table Scan. Имеем такую таблицу: users( id, email, created_at ) Индекс: CREATE INDEX idx_users_email ON users(email); Кажется, что такой запрос точно должен использовать индекс: SELECT * FROM users WHERE email = 'test@example.com'; И обычно действительно будет Index Scan. Но достаточно небольшой детали — и индекс может перестать использоваться. Например: SELECT * FROM users WHERE LOWER(email) = 'test@example.com'; Проблема в том, что индекс построен по колонке: email. А в условии используется выражение: LOWER(email) Для оптимизатора это уже не то же самое условие. В итоге серверу часто приходится: применять LOWER() к строкам; сравнивать результат; читать гораздо больше данных, чем ожидалось. Исправляется это expression/functional index: CREATE INDEX idx_users_email_lower ON users(LOWER(email)); То же самое часто происходит с датами: SELECT * FROM orders WHERE DATE(created_at) = '2025-01-10'; Из-за: DATE(created_at) обычный индекс по created_at может не помочь, потому что функция применяется к колонке. Правильнее писать диапазон: SELECT * FROM orders WHERE created_at >= '2025-01-10' AND created_at < '2025-01-11'; Так условие остаётся sargable — то есть пригодным для эффективного использования индекса. Ещё одна частая проблема — преобразования типов. Например, плохо: WHERE user_id::text = '100' Если user_id — integer, то здесь преобразование применяется к колонке. В такой ситуации обычный индекс по user_id может не использоваться. Правильнее: WHERE user_id = 100 Важно: простое условие вида: WHERE user_id = '100' в некоторых СУБД может нормально привести литерал к integer и всё равно использовать индекс. Проблема чаще начинается там, где преобразуется сама колонка или выражение становится сложнее. Популярная ошибка с LIKE: WHERE email LIKE '%gmail.com' Здесь обычный B-Tree индекс обычно бесполезен. Так как поиск начинается не с начала строки; сервер не может эффективно использовать упорядоченность индекса. Если таблица маленькая: 100–1000 строк, то Full Scan может быть дешевле, чем прыжки по индексу. 🔥 Наличие индекса ещё не гарантирует его использование. Функции над колонками, преобразования типов, неправильные LIKE, OR-условия и устаревшая статистика могут сделать индекс бесполезным или менее выгодным для оптимизатора. ➡️ SQL Ready | #практика
1 494