Ilya Obshadko wrote:
>
> >> Это известная засада. На простых запросах MySQL весьма быстр, но стоит
> >> начать запрос усложнать - скорость резко падает...
> SS> А чего, explain у mySQL совсем бесполезен?
>
> О птичках. Натолкнулся на потрясающий эффект. Берем 2 запроса:
>
> select a.*, b.* from a left join b on a.id = b.id
>
> select a.*, b.* from a, b where a.id = b.id
>
> В первом варианте первичный ключ таблицы a НЕ ИСПОЛЬЗУЕТСЯ,
Ключевой индекс, видимо?
> что очевидным образом приводит к full table scan...
Честно говоря, тут не очевидно, что он мог бы дать какой-то эффект -
ведь никаких условий на a.id не наложено, кроме a.id = b.id, но его по
этому индексу все равно проверить нельзя - там ведь b.id нету. Да и a.*
у тебя в индексе вряд ли валяется. А индекс придется просканировать все
равно весь.
В общем вполне возможно что судьба такой, и в этом случае full scan
может быть эффективнее - все равно данные где-то доставать надо. Вот
если бы было что-то типа a.id in(тра-ля-ля) and a.id = b.id, то для
отбора по первому условию можно было бы задействовать индекс.
=============================================================================
= Apache-Talk@xxxxxxxxxxxxx mailing list =
Mail "unsubscribe apache-talk" to majordomo@xxxxxxxxxxxxx if you want to quit.
= Archive avaliable at http://www.lexa.ru/apache-talk =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.