【发布时间】:2012-10-14 22:59:52
【问题描述】:
我们正在使用下表运行 MySQL/ISAM 数据库:
create table measurements (
`tm_stamp` int(11) NOT NULL DEFAULT '0',
`fk_channel` int(11) NOT NULL DEFAULT '0',
`value` int(11) DEFAULT NULL,
PRIMARY KEY (`tm_stamp`,`fk_channel`)
);
tm_stamp-fk_channel 组合必须是唯一的,因此是复合主键。现在,由于某些不相关的原因,数据库将迁移到 InnoDB 引擎。在谷歌搜索后,我发现密钥将决定磁盘上数据的物理顺序。目前 90% 的查询如下:
SELECT value FROM measurements
WHERE fk_channel=A AND tm_stamp>=B and tm_stamp<=C
ORDER BY tm_stamp ASC
插入是 99%,按 tm_stamp 的顺序排列,它是数据记录器网络的存储。该表有数百万行,但稳定增长。问题是
- 存储引擎的单独更改是否应该导致任何显着的性能变化,更好还是更差?
- 对于最流行的 SELECT,索引中的列顺序是否重要? This blog 提出类似的建议。
- 由于聚集索引的性质,我们是否可以省略 ORDER BY 子句并获得一些性能?
【问题讨论】:
-
您可能会发现以下感兴趣的答案stackoverflow.com/questions/4419499/…
标签: mysql performance indexing innodb clustered-index