Как сделать, чтобы этот запрос не использовал временную таблицу для

ORDER BY.. ?)

11 ответов

28 просмотров

Для начала пришли корректный запрос

Andriy-Ba 🦅 Автор вопроса
Ilya Zviagin
Для начала пришли корректный запрос

А что не так с тем что я выше скинул?

Andriy-Ba 🦅 Автор вопроса

EXPLAIN SELECT ucp .* FROM (users_content_partners_2 AS ucp) JOIN users_partners AS up ON (up.id = ucp.users_partners_id) WHERE ucp.users_partners_id = 3356970 ORDER BY ucp.id DESC LIMIT 0, 11;

Andriy Ba 🦅
EXPLAIN SELECT ucp .* FROM (users_content_part...

Ну смотри вот сюда точка У тебя есть таблица users Content partners. У неё есть видимо ключ по User partners ID. И ты используешь запросе фильтр по этому полю users partners ID и ещё сортировку по полю ID из этой же таблицы. Как оптимизируется запросы по этим критериям: фильтр может оптимизироваться индексом и получать из индекса очень быстро записи. Оптимальность этой операции зависит от количества записей приходящихся на одно значение ключа. Допустим предположим что это количество либо единица либо малая величина типа 10-50. Тогда это будет оптимальной операцией. Дальше может быть оптимизирован подраздел ордер бай. Это делается путём сканирования какого-то индекса в котором записи следует в порядке которые указан в этой фразе orderby. Нужно сразу сказать что это очень плохая оптимизация Ну то есть либо плохая либо очень плохая потому что чаще всего она неэффективная. Ну если количество записей которые запрос отфильтровал на всех предыдущих этапах а сортировка - Это самый последний этап выполнения запроса если количество записей маленькое то эта оптимизация не нужна вообще серверу легче взять там 50 100 записей отсортировать их в памяти и выдать

Ilya Zviagin
Ну смотри вот сюда точка У тебя есть таблица users...

Ну так вот идея в том что один запрос на одну таблицу может применить только одну условие оптимизации либо он оптимизирует фильтр либо он оптимизирует сортировку оптимизировать фильтр всегда гораздо более выгоднее чем сортировка потому что фильтр сразу даёт большое отсечение по количеству обрабатываемых запросов строк Это очень хорошо

Ilya Zviagin
Ну смотри вот сюда точка У тебя есть таблица users...

Так вот у тебя есть две возможные оптимизации которые можно применить на эту таблицу это оптимизация фильтра либо оптимизация сортировки. Оптимизировать фильтр выгодно очень сильно оптимизировать сортировку почти никогда не выгодно точка У тебя достаточно простой запрос тут наверное сортировку можно было бы оптимизировать вот я говорю В общем в целом

Andriy-Ba 🦅 Автор вопроса
Ilya Zviagin
Ну так вот идея в том что один запрос на одну табл...

Что делать если после фильтра возвращается 100к данных?

Ilya Zviagin
Так вот у тебя есть две возможные оптимизации кото...

Так вот получается что оптимизировать-то лучше тебе фильтр, фразу where, а вовсе не сортировку

Andriy Ba 🦅
EXPLAIN SELECT ucp .* FROM (users_content_part...

Сколько записей приходится в этой таблице в таблице users Content Partner на одно значение users partners ID? Можно сказать конкретнее сколько приходится вот на Конкретно этот ID

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта