2013-03-14 51 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 2013-03-14 14:02:06

+0

謝謝@Miky。只對優化特定的SELECT查詢感興趣。 – chattsm 2013-03-14 14:15:08

1

指數是有用的,當你在使用列在where子句,或當列是兩個表之間的鏈路狀態的一部分。 See MySQL Doc