Отвечу цитатой
<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
> 
> 

Ответить