utros 07.04.2012 19:35 pedobook

А тут есть умные люди, умеющие готовить mysql? Нужно объяснить тупому мне, что такое cardinality для индекса и сказать как мускуль с этими вашими индексами работает:
например, есть у меня на таблице два индекса: по полю 1 и по полю 2. Я гоню селект с условием по обоим поялям. Мускуль подхватит только один индекс или пройдётся по обоим?
И обратная ситуация: есть индекс по двум полям, а выбираю по одному. Индекс подхватится? И на сколько медленнее будет выборка если таки-подхватится?

Recommended by:

@rapture: для общего развития

1. hleem 07.04.2012 19:39 Gajim

не скажу про cardinality, но посмотреть какой индекс будет использоваться можно через EXPLAIN перед запросом. а вообще — один индекс используется на запрос

2. utroshleem /1 07.04.2012 19:44 pedobook

То есть он не умеет bitmap/hash-join по нескольким индексам?
Ок. Спасибо.

3. hleemutros /2 07.04.2012 19:46 Gajim

насколько я понимаю, каждый join приводит к использованию отдельного индекса

4. utroshleem /3 07.04.2012 19:48 pedobook

hash-join (если я правильно помню название) — это join по нескольким индексам одной таблицы.
А это логично, да.

5. utros 07.04.2012 20:19 pedobook

Ещё глупый вопрос:
я делаю
SELECT ... FROM tablename WHERE field1='blah' ORDER BY field2;
Тут достаточно будет сделать индекс по field1 и
ALTER TABLE tablename ORDER BY field2;
чтобы поиметь быструю выборку или я что-то проебал?

7. utroshleem /6 07.04.2012 20:31 pedobook

Ну ок, спасибо.

Do you really want to delete ?