ORDER BY.. ?)
Для начала пришли корректный запрос
А что не так с тем что я выше скинул?
Синтаксически неправильный
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;
Ну смотри вот сюда точка У тебя есть таблица users Content partners. У неё есть видимо ключ по User partners ID. И ты используешь запросе фильтр по этому полю users partners ID и ещё сортировку по полю ID из этой же таблицы. Как оптимизируется запросы по этим критериям: фильтр может оптимизироваться индексом и получать из индекса очень быстро записи. Оптимальность этой операции зависит от количества записей приходящихся на одно значение ключа. Допустим предположим что это количество либо единица либо малая величина типа 10-50. Тогда это будет оптимальной операцией. Дальше может быть оптимизирован подраздел ордер бай. Это делается путём сканирования какого-то индекса в котором записи следует в порядке которые указан в этой фразе orderby. Нужно сразу сказать что это очень плохая оптимизация Ну то есть либо плохая либо очень плохая потому что чаще всего она неэффективная. Ну если количество записей которые запрос отфильтровал на всех предыдущих этапах а сортировка - Это самый последний этап выполнения запроса если количество записей маленькое то эта оптимизация не нужна вообще серверу легче взять там 50 100 записей отсортировать их в памяти и выдать
Ну так вот идея в том что один запрос на одну таблицу может применить только одну условие оптимизации либо он оптимизирует фильтр либо он оптимизирует сортировку оптимизировать фильтр всегда гораздо более выгоднее чем сортировка потому что фильтр сразу даёт большое отсечение по количеству обрабатываемых запросов строк Это очень хорошо
Так вот у тебя есть две возможные оптимизации которые можно применить на эту таблицу это оптимизация фильтра либо оптимизация сортировки. Оптимизировать фильтр выгодно очень сильно оптимизировать сортировку почти никогда не выгодно точка У тебя достаточно простой запрос тут наверное сортировку можно было бы оптимизировать вот я говорю В общем в целом
Что делать если после фильтра возвращается 100к данных?
Так вот получается что оптимизировать-то лучше тебе фильтр, фразу where, а вовсе не сортировку
Сколько записей приходится в этой таблице в таблице users Content Partner на одно значение users partners ID? Можно сказать конкретнее сколько приходится вот на Конкретно этот ID
Неужели это 100.000 записей?
Обсуждают сегодня