| Канал | Публикаций | Подписчиков | Последний пост |
|---|---|---|---|
Базы данных (Data Base)
[telegram]
|
7 | 8118 | 14.05.26 |
|
Библиотека программиста …
[max]
|
9 | 1967 | 03.05.26 |
|
Библиотека программиста
[max]
|
9 | 1484 | 03.05.26 |
|
Python Разработка | Web …
[max]
|
9 | 2473 | 03.05.26 |
|
Библиотека PHP программи…
[max]
|
8 | 718 | 03.05.26 |
|
Хакер Free
[max]
|
9 | 2197 | 03.05.26 |
|
Frontend Разработка | Ja…
[max]
|
9 | 1354 | 03.05.26 |
| Канал | Публикаций | Подписчиков | Последний пост |
|---|---|---|---|
|
IT мероприятия России / …
[max]
|
1 | 522 | 16.05.26 |
|
Bash Советы - Bash Scrip…
[max]
|
9 | 1861 | 03.05.26 |
|
Книги для программистов
[max]
|
9 | 2355 | 03.05.26 |
|
Программирование {BookFl…
[max]
|
9 | 2618 | 03.05.26 |
|
Java Разработка | Spring…
[max]
|
9 | 1200 | 03.05.26 |
|
Python Разработка | Web …
[max]
|
9 | 2473 | 03.05.26 |
|
C++ Developer • Cpp Syst…
[max]
|
9 | 1892 | 03.05.26 |
Загрузка данных...
| Размещенный пост | Текст публиакции | Рекламирующий канал | Просмотры | Просмотры 24 ч | Прирост подписчиков |
|---|
Загрузка данных...
| Размещенный пост | Текст публикации | Рекламируемый канал | Просмотры | Просмотры 24 ч | Прирост подписчиков |
|---|
| Дата и время публикации | Текст публикации | Рекламируемый канал | Динамика просмотров | Всего просмотров |
|---|---|---|---|---|
| 2026-05-16 14:05:01 | 🚨 Как понять, почему запрос тормозит? Сегодня покажу простой, но действенный подход к диагностике медленных SQL-запросов. Когда к тебе приходит прод с жалобой "что-то всё виснет", важно не паниковать, а системно подойти к анализу. Вот что я делаю первым делом: 1. Включаю EXPLAIN (ANALYZE) Это ваш лучший друг. Не EXPLAIN, а именно ANALYZE, чтобы получить реальные значения времени, а не план на бумаге. 2. Смотрю на узлы с наибольшим временем Часто виновник — Seq Scan по большой таблице или Nested Loop с миллионами итераций. 3. Ищу несработавшие индексы Был ли Index Scan или Index Only Scan? Если нет — стоит проверить, почему не сработал индекс. Может, фильтр не селективный? 4. Проверяю фильтрацию и сортировку ORDER BY может убить всё. Особенно если не по индексу. 5. Думаю про статистику ANALYZE делали недавно? PostgreSQL может строить плохой план, если у него устаревшие данные. 🛠 Если ты часто отлаживаешь SQL — советую поставить pgMustard или использовать EXPLAIN DEPOT. Они визуализируют планы и сразу показывают узкие места. #db 👉 @database_info 🚨 Как понять, по… | — |
|
309 |
| 2026-05-16 12:05:00 | В России можно посещать IT-мероприятия хоть каждый день: как оффлайн, так и онлайн Но где их находить? Как узнавать о них раньше, чем когда все начнут выкладывать фотографии оттуда? Переходите на канал IT-Мероприятия России. В нём каждый день анонсируются мероприятия со всех городов России 📆 в канале размещаются как онлайн, так и оффлайн мероприятия; 👩💻 можно найти ивенты по любому стеку: программирование, frontend-backend разработка, кибербезопасность, дата-аналитика, osint, devops и другие; 🎙 разнообразные форматы мероприятий: митапы с коллегами по цеху, конференции и вебинары с известными опытными специалистами, форумы и олимпиады от важных представителей индустрии и многое другое А чтобы не искать по разным форумам и чатам новости о предстоящих ивентах: 🚀 IT-мероприятия России — подписывайся и будь в курсе всех предстоящих мероприятий! В России можно п… |
|
|
360 |
| 2026-05-15 08:10:01 | Антипаттерн: NULL в WHERE — и ты в ловушке Когда в таблице есть NULL, а в WHERE ты пишешь что-то вроде: SELECT * FROM users WHERE age != 30; Ты ожидаешь, что выберутся все, кто не 30. Но если age IS NULL — такие строки пропадут из выборки! Почему? Потому что NULL != 30 не TRUE, это UNKNOWN. А SQL возвращает строки только там, где WHERE → TRUE. Как избежать? 1. Будь явно осторожен с NULL: SELECT * FROM users WHERE age != 30 OR age IS NULL; 2. Логика на уровне схемы: – Если поле нужно всегда — делай NOT NULL. – Если допускаешь NULL, продумывай поведение выборок. 3. Не верь глазам своим: Даже count(*) и count(column) ведут себя по-разному из-за NULL. Вывод: NULL — это не ноль, не пустая строка и не "ничего". Это "мы не знаем". И SQL ведёт себя с ним очень осторожно. Сохрани, чтобы не словить грабли. #db 👉 @database_info Антипаттерн: NUL… | — |
|
524 |
| 2026-05-14 08:55:37 | 🚨 SELECT * - скрытый враг в проде На dev-сервере всё шустро. В проде — беда: запросы висят, база потеет. И вроде бы всё ок... пока не заглянешь в SQL: SELECT * FROM users WHERE status = 'active'; На первый взгляд — удобно. Но: 🔻 Проблемы “SELECT *”: – Тянет все колонки, даже ненужные. А их может быть 30+. – Увеличивает нагрузку на сеть и память приложения. – Ломает кэш — ведь даже малейшие изменения в колонках меняют структуру результата. – Убивает индекс-only scan: Postgres не может использовать покрывающий индекс, если явно не указаны поля. ✅ Как надо: 🎯 Выбирай только нужные поля: SELECT id, name, email FROM users WHERE status = 'active'; 💡 Хочешь “быстро протестить” в dev-е? Ок. Но не пускай такое в прод. Автоматизируй линтинг SQL, если надо. Вывод: SELECT * — это не “удобно”, это дорого. И ты за него уже платишь. Сохрани, чтобы не словить боль в проде. А у тебя где последний раз встречалось SELECT *? #db 👉 @database_info 🚨 SELECT * - ск… | — |
|
524 |
| 2026-05-11 08:50:14 | ⚠️ Антипаттерн: использовать NULL без оглядки На первый взгляд NULL — это просто “нет значения”. Но в реальности — это тихий саботаж: 🔸 NULL != NULL. Да-да, сравнение NULL = NULL даст false или unknown. Это ломает привычную логику и может убить фильтры. 🔸 Агрегации ведут себя странно. COUNT(column) не считает NULL'ы. AVG, SUM — тоже их игнорируют. Итог: неверная статистика. 🔸 Индексы и WHERE column IS NULL. Не все СУБД эффективно используют индексы при таких запросах. Можно словить тормоза. 🔸 NOT IN + NULL = 💥. Запрос WHERE id NOT IN (subquery) может вернуть пустой результат, если в подзапросе есть хотя бы один NULL. 💡 Как избежать проблем: 1. Всегда осознанно работай с NULL — используй IS NULL и IS NOT NULL, не = и !=. 2. По возможности избегай NULL в колонках, где это не нужно. Лучше использовать значения по умолчанию. 3. Добавляй проверки в коде: COALESCE, IFNULL, NVL и аналоги. 4. Понимай, как твоя СУБД работает с NULL в индексах и фильтрах. 🎯 Вывод: NULL — не пустота, а “неизвестность”. Обращайся с ним осторожно, иначе баги будут неявными и неприятными. Сохрани, чтобы не отловить баг на проде 🐛 #db 👉 @database_info ⚠️ Антипаттерн: … | — |
|
571 |
| 2026-05-08 08:13:22 | ⚡️ Совет по работе с базами данных 💡 Уникальные индексы с исключением определенных строк Создание уникальных индексов в некоторых случаях невозможно из-за дублирования значений - например, в строках, помеченных как «мягко удаленные» (soft-deleted). Исключив такие строки из индекса, можно корректно настроить ограничение уникальности. В MySQL частичные уникальные индексы (unique partial indexes) требуют эмуляции. В современных базах данных часто используется паттерн Soft Delete, когда данные не удаляются физически, а помечаются флагом is_deleted = true. Если вы хотите, чтобы поле email было уникальным только для активных пользователей, обычный уникальный индекс выдаст ошибку при попытке регистрации нового пользователя с почтой, которая уже есть в «корзине». Использование частичного индекса решает эту проблему, позволяя игнорировать помеченные на удаление записи. Нюанс для MySQL: В отличие от PostgreSQL или SQL Server, MySQL не поддерживает синтаксис WHERE внутри команды CREATE INDEX. Чтобы добиться такого же поведения, разработчики обычно используют: • Виртуальные колонки (Generated Columns): создается колонка, которая принимает значение только если запись активна, и на нее вешается уникальный индекс. • Составные индексы: включение флага удаления или временной метки в сам индекс. #db 👉 @database_info ⚡️ Совет по рабо… | — |
|
675 |
Загрузка данных...
| Время | Контент | Подписчиков | Кто ссылался | Просмотры 48ч | Просмотры 24ч |
|---|