🎯 #SQLAntiPattern: LIKE в начале строки
Частая ошибка при поиске по тексту:
Проблема: индексы не могут эффективно использоваться с LIKE, когда маска начинается с '%'!
✅ Решения:
1) Используйте полнотекстовый поиск:
2) Создайте отдельную колонку для поиска:
💡 Полнотекстовый поиск может быть в сотни раз быстрее LIKE '%...%'!
#SQLOptimization #ПроизводительностьSQL
Частая ошибка при поиске по тексту:
-- Очень медленный запрос!
SELECT * FROM products
WHERE name LIKE '%apple%';
Проблема: индексы не могут эффективно использоваться с LIKE, когда маска начинается с '%'!
✅ Решения:
1) Используйте полнотекстовый поиск:
-- PostgreSQL
SELECT * FROM products
WHERE to_tsvector('english', name) @@ to_tsquery('apple');
-- MySQL
SELECT * FROM products
WHERE MATCH(name) AGAINST('apple' IN NATURAL LANGUAGE MODE);
2) Создайте отдельную колонку для поиска:
-- При вставке:
UPDATE products SET name_lower = LOWER(name);
-- При поиске:
SELECT * FROM products
WHERE name_lower LIKE '%apple%';
💡 Полнотекстовый поиск может быть в сотни раз быстрее LIKE '%...%'!
#SQLOptimization #ПроизводительностьSQL
💘1
🎯 #SQLAntiPattern: Отсутствие индексов
Запросы без индексов могут работать в ТЫСЯЧИ раз медленнее!
Проблемный запрос:
Если у нас миллионы заказов и нет индекса по customer_email, СУБД будет проверять КАЖДУЮ строку! 🐢
✅ Правильное решение:
Как определить, нужен ли индекс?
- Используйте EXPLAIN для анализа запроса
- Индексируйте поля в WHERE, JOIN, GROUP BY, ORDER BY
- Учитывайте кардинальность (число уникальных значений)
💡 Помните: индексы ускоряют SELECT, но замедляют INSERT/UPDATE/DELETE.
#Индексы #SQLOptimization
Запросы без индексов могут работать в ТЫСЯЧИ раз медленнее!
Проблемный запрос:
SELECT * FROM orders
WHERE customer_email = 'user@example.com';
Если у нас миллионы заказов и нет индекса по customer_email, СУБД будет проверять КАЖДУЮ строку! 🐢
✅ Правильное решение:
CREATE INDEX idx_orders_customer_email ON orders(customer_email);
Как определить, нужен ли индекс?
- Используйте EXPLAIN для анализа запроса
- Индексируйте поля в WHERE, JOIN, GROUP BY, ORDER BY
- Учитывайте кардинальность (число уникальных значений)
💡 Помните: индексы ускоряют SELECT, но замедляют INSERT/UPDATE/DELETE.
#Индексы #SQLOptimization
💘1