【问题标题】:Will this MySQL index increase performance?这个 MySQL 索引会提高性能吗?
【发布时间】:2013-03-14 13:53:52
【问题描述】:

我有以下 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 查询表明可以,但我没有快速的方法来测试大型数据集。

【问题讨论】:

    标签: mysql performance select indexing


    【解决方案1】:

    是的。即使您仍在进行全表扫描,拥有索引也会使排序操作(由于排序依据)变得不必要。

    但它也会增加插入和删除语句的开销!

    【讨论】:

    • 我的错,我错过了显然会从中受益的订单部分。
    • 谢谢@Miky。只对针对特定 SELECT 查询进行优化感兴趣。
    【解决方案2】:

    索引在您使用 where 子句中的列时很有用,或者当列是两个表之间的链接。 See MySQL Doc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-25
      • 2011-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-19
      • 1970-01-01
      • 2015-04-28
      相关资源
      最近更新 更多