2013-03-14 29 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