Базы Данных (Data Base) | SQL & NoSQL. PostgreSQL, MySQL и Big Data. Уроки для Backend и Data Engineer. Архитектура БД, Оптимизация и Design.
@database_info
🔥 Оптимизация индексов: частая ошибка DBA 🔥 Сегодня разберём распространённую ошибку, которую совершают многие администраторы баз данных — избыточные индексы. 💡Проблема Добавление индексов — это полезно, но если их становится слишком много, то база данных начинает тормозить при вставке, обновлении и удалении данных. Почему? Потому что каждый индекс требует дополнительного обслуживания при изменениях в таблице. 💡Пример ошибки Представим таблицу orders: CREATE TABLE orders ( id SERIAL PRIMARY KEY, customer_id INT NOT NULL, order_date DATE NOT NULL, total DECIMAL(10,2) NOT NULL ); Допустим, мы добавляем индексы: CREATE INDEX idx_customer ON orders(customer_id); CREATE INDEX idx_order_date ON orders(order_date); CREATE INDEX idx_customer_order_date ON orders(customer_id, order_date); На первый взгляд, всё логично, но есть проблема: индекс idx_customer_order_date покрывает оба предыдущих индекса! 💡Как исправить? Можно удалить idx_customer и idx_order_date, так как составной индекс (idx_customer_order_date) способен выполнять их работу. 📌 Как проверить ненужные индексы? 1️⃣ В PostgreSQL: SELECT indexrelid::regclass, pg_size_pretty(pg_relation_size(indexrelid)) FROM pg_stat_user_indexes ORDER BY pg_relation_size(indexrelid) DESC; 2️⃣ В MySQL: SHOW INDEX FROM orders; Здесь ищем индексы, которые дублируют друг друга. Вывод: Чем меньше избыточных индексов — тем быстрее работает ваша база данных. Проверьте свои индексы прямо сейчас! #db 👉 @database_info
Если у вас установлено приложение,
вы можете сразу перейти в канал