Русский
Открыть в Telegram

Пост 💥💥💥 Ещё анонос и розыгрыш проходки!

10 апреля 2025
D
Ссылка
нажмите — покажем
💥💥💥 Ещё анонос и розыгрыш проходки! Через 2 недели (с 21 по 25 апреля) начнётся онлайн конференция Podlodka Php Crew которая будет проходить целых 5 дней. Тема сезона - High Performance. Т.е. про оптимизацию всего связанного и не связанного с php. Я там буду выступать и расскажу почему индексы не работают. Вообще тема индексов достаточно избитая, часто слышу "тормозят запросы в базу - создай индекс". Ну изи же. 🔹 А что если он не будет работать в условиях этого запроса? 🔹 Или вред от него будет выше, чем польза? 🔹 Или почему планировщик вообще игнорирует ваш, на первый взгляд, валидный индекс? Вообще с планировщиком всегда непросто, и не всегда понятно как он выбирает путь исполнения запроса и индекс. Но есть хитрости, как заставить, например, планировщик mysql использовать индекс. ✅ Директива USE INDEX Это, так скажем, "мягкая" рекомендация для планировщика выбрать указанный индекс. Но она может быть проигнорирована, если будет более оптимальный путь. SELECT * FROM users USE INDEX (idx_email) WHERE email = '[email protected]'; ✅ Директива FORCE INDEX "Жесткая" директива, требующая от потимизатора использовать указанный индекс, даже если он считает это не оптимальным. При этом оптимизатор игнорирует оценку стоимости альтренатив SELECT * FROM users FORCE INDEX (idx_email) WHERE email = '[email protected]'; Допустим есть запрос SELECT * FROM orders WHERE customer_id = 42 AND status = 'done'; записей с customer_id=42, допустим, 1000 с разными значениями в status, а со status = done и разными customer_id - 50000. И есть 2 индекса - на customer_id, и на status. Тут планировщик выберет customer_id, это более селективно. Но вот мы взяли и зафорсили индекс по status, нам показалось так лучше (и это может действительно лучше в каких-то сценариях) - SELECT * FROM orders FORCE INDEX (idx_status) WHERE customer_id = 42 AND status = 'done'; в итоге получим, что сначала запрос отберёт 50000 записей со status = done, а потом из них возмёт 100 записей с customet_id 42. Вот такая оптимизация. В PostgreSQL такогих деректив нет. Но есть другие "приёмы" как можно скорректировать работу планировщика. Вообще, на мой взгляд, к такому нужно относится с большой осторожностью. Если без костылей не получается завести индекс, вероятно что-то мы делаем не так. В своём докладе я расскажу и об этом, и о том почему индексы игнорируются или работают не эфективно. У меня есть проходка на мероприятие и ,если мой доклад интересен, то есть шанс послушать его в живую, а так же все остальные с Podlodka Php Crew. Для этого нужно оставить любой комментарий к посту, победителя выберу случайным образом через неделю 🫡
1 · 728 ·

Рядом в ленте

DDmitriiНапоминаю, что идет розыгрыш бесплатной проходки на Стачку. Нужно всего лишь написать коммент и приехать в Ульяновск. Кстати, уже есть и второй билет, но даже пDDmitriiНеделя «High Performance» на PHP Crew от Podlodka пройдет 21-25 апреля! Анонс от подлодки: ``` В новом сезоне: - разберемся, как настроить RoadRunner для максим
это сообщение
DDmitrii@viktorprogger @evgwed @tashimotor Выиграли билеты на стачку. Если вам не нужны эти билеты, напишите мне я передам их другим!DDmitriiНужен совет/рекомендации/доводы/мысли. Ситуация следующая: в модуль добавил больше расширяемости. И все расширения производятся через объект конфигурации. Соотв

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Границы индекса · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем