2013-03-14 2 views
0

У меня есть следующая MySQL таблица:Будет ли этот индекс MySQL увеличивать производительность?

CREATE TABLE `my_data` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT, 
    `tstamp` int(10) unsigned NOT NULL DEFAULT '0', 
    `name` varchar(255) NOT NULL DEFAULT '', 
    PRIMARY KEY (`id`), 
) ENGINE=MyISAM DEFAULT CHARSET=utf8; 

Я хочу, чтобы оптимизировать для следующего SELECT запроса только:

SELECT `id`, `name` FROM `my_data` ORDER BY `name` ASC 

будет добавлять следующие показатели увеличения индекса, независимо от размера таблицы?

CREATE INDEX `idx_name_id` ON `my_data` (`name`,`id`); 

EXPLAIN запроса предполагает, что это будет, но у меня нет быстрого способа тестирования с большим набором данных.

ответ

1

Да, это так. Даже при том, что вы все еще выполняете полное сканирование таблицы, наличие индекса сделает операцию сортировки (из-за порядка) ненужной.

Но он также добавит служебные данные для вставки и удаления заявлений!

+0

мой плохой, я пропустил часть заказа, которая, очевидно, выиграла бы от нее. – Sebas

+0

Спасибо @Miky. Только заинтересован в оптимизации для этого конкретного запроса SELECT. – chattsm

1

Index является полезным при использовании колонки в где положении, или если столбец является частью условия для связи между двумя таблицами. See MySQL Doc

Смежные вопросы