Отвечу цитатой
<quote>
При выборке в секции SELECT требуется дополнительное время на слияние
основной выборки и подзапроса. Вышло 1% от общего времени.(+ LEFT JOIN / -
SELECT)
Оказалось, что каждый LEFT JOIN выполняется отдельным потоком! В то время
как подзапросы выполняются последовательно после основной выборки. (+ LEFT JOIN
/ - SELECT)
Каждый LEFT JOIN объединяется в результирующую выборку, что требует
дополнительной памяти. В то время как подзапрос вернет нам одно значение на
каждую строку, т.е. для получения результата нам нужно меньше памяти. (- LEFT
JOIN / + SELECT)
Вывод: В условиях многоядерных серверов LEFT JOIN имеет неоспоримые
преимущества
</quote>
07 февраля 2012, 01:07 от Alex Korchmar <[email protected]>:
> On Tue, Feb 07, 2012 at 12:38:51AM +0400, Sergey Rudenko wrote:
>
> > Я возможно далёк, но хотел-бы услышать как можно избавиться от join,
> > хотя-бы каким методом
> сделать select без join и тупо отфильтровать нужное?
> Идея что фронтендов вы можете понапихать до бесконечности, если они не
> справляются с сортировкой, а добавить еще одно процессорное ядро в сервер с
> БД может оказаться уже физически неодолимой задачей.
>
> Ну или делать такую структуру тазы банных, чтобы ей не были нужны join'ы
> или были нужны крайне редко (в том числе - отказываясь от нормализации и
> дублируя часть данных, диски и линки нынче дешевы, cpu не совсем).
>
> Редкие операции выносятся на отдельный сервер и во время тихое.
>
> > Alex
>
>