我试图在已经有一些索引的SELECT表中加快MySQL查询的速度。希望不会对同时运行的频繁INSERT INTO查询(由其他客户端运行)产生重大影响。这些表有数百万个条目,并且已经传递了千兆字节大小(它们有一个BLOB字段)。
表中有一对描述连续间隔的字段(可以是以微秒为单位的时间间隔,也可以是一些执行、版本或其他任何内容)。这两个字段都有索引;我有两个索引,一个只用于其中一个字段(当我对其进行查询时),另一个用于两个字段(也可以出现在许多查询中)。
另外两个候选索引来自一个标识符(例如,文件名),因为它也通常用于查询。
一位同事建议我们将标识符合并到前面的两个索引中。但是,我觉得有一个单独的键更有意义。我正在准备一个测试,以确定哪一个是更好的选择,但我希望它将需要几天。同时,我正在寻找过去的经验和/或有关这方面的建议。
所以我的问题是:
发布于 2009-09-18 11:48:56
确定要为表定义哪些索引取决于许多因素。其中最重要的一个是您到底想要运行什么查询。
在这种情况下,如果不知道表结构以及您想要在工作中包含标识符的查询,就很难说出如何构建索引。
请记住,MySQL每个查询限制只有一个索引。这意味着查询优化器一次只对任何给定表使用一个索引(如果有的话)。
https://stackoverflow.com/questions/1443841
复制相似问题