оптимизация индекса

Rynor

stay hungry
оптимизация индекса

Уважаемые!
таблица:
id int
tm time
...

запросы к ней:
SELECT count(id) .... WHERE... ORDER BY id, tm [DESC]
SELECT count(id) .... WHERE... ORDER BY tm [DESC]
SELECT ... WHERE... ORDER BY id, tm [DESC]
SELECT ... WHERE... ORDER BY tm [DESC]

вопрос:
какой индекс будет оптимальным?
KEY (id),
KEY (tm)
или составной
KEY (id, tm)?
или это одно и тоже?

PRIMARY KEY нет.

Заранее благодарю за помощь.
 

Rynor

stay hungry
несколько, 5-10 вариантов
по-моему, для индекса важнее ORDER BY, я их все привел
 

ONK

Пассивист PHPСluba
Re: оптимизация индекса

Автор оригинала: Rynor
запросы к ней:
1. SELECT count(id) .... WHERE... ORDER BY id, tm [DESC]
2. SELECT count(id) .... WHERE... ORDER BY tm [DESC]
3. SELECT ... WHERE... ORDER BY id, tm [DESC]
4. SELECT ... WHERE... ORDER BY tm [DESC]
Заранее благодарю за помощь.
1. Индекс не поможет (различный тип ортировки по двум полям). Остаётся искать оптимальный индекс для минимально возможной выборки.
2. для сортировки подойдёт индекс по tm но не на всех версиях мускула (старые не используют в сортироваке по DESC индексов).

Если бы обе сортировки производились по убыванию (или по возростанию), то в первом запросе можно было бы использовать индекс KEY (id,tm).

COUNT(id) лучше заменить на count(*) и оптимизировать условия в WHERE .....

Индексы для WHERE важнее, т.к. оптимальная выборка позволяет выбрать только те записи что нужны, а в этом случае про оптимизацию сортировки можно не думать.
 

Rynor

stay hungry
большое спасибо
я без понятий про индексы по WHERE вообще
особо не углублялся в вопрос, базы небольшие
а тут привалило счастье - надо оптимизировать здоровенную тормозную базу
вот и начал копать :)
 

Rynor

stay hungry
кстати,
а если без DESC в ORDER BY?
попробую составной индекс.

>COUNT(id) лучше заменить на count(*) и оптимизировать условия в WHERE .....

там и так в WHERE все ужато :)
я так понял по форуму, что count(*) не дает преимуществ при наличии WHERE
 
Сверху