MySQL:哪个更好,单独的索引还是相同的索引?

时间:2009-09-18 10:59:50

标签: mysql indexing

我正在尝试加速已经有一些索引的MySQL表中的SELECT个查询。希望对同时运行的频繁INSERT INTO查询(由其他客户端)产生重大影响。这些表有数百万个条目,并且已经超过了技嘉大小(它们有一个BLOB字段)。

这些表有一对描述连续间隔的字段(可以是以微秒为单位的时间间隔,也可以是执行次数,版本或其他内容)。这两个字段被索引;我有两个索引,一个只用于其中一个字段(当我查询它时),另一个用于两个字段(也可以出现在许多查询中)。

另外两个候选索引来自标识符(例如,文件名),因为它也常用于查询。

一位同事建议我们将标识符合并到之前的两个索引中。但是,我觉得拥有单独的键更有意义。我正在准备一个测试,以确定哪个是更好的选择,但我预计这将需要几天时间。与此同时,我正在寻找过去的经验和/或建议。

所以我的问题是:

  1. 哪个理想,为标识符创建新索引?或者将其纳入区间索引?即,许多标识符可以具有相同的间隔,并且许多间隔可以具有相同的标识符。
  2. 这两个选项中哪一个应占用更多磁盘空间,尤其是在数百万行表中?我相信“更快”的一个,无论哪个,都将是最耗费空间的。
  3. 我不知道创建新索引(例如,单独的索引选项)是否解决了什么问题或者没有什么帮助。您在此或类似情况下的过往经历是什么?我可以就此主题专门研究任何建议/文件吗?

1 个答案:

答案 0 :(得分:2)

确定要为表定义的索引取决于很多因素。其中最重要的一个是你想要运行的查询。

在这种情况下,如果不知道表结构以及您希望如何在工作中包含标识符的查询,就很难说如何构建索引。

请记住,MySQL每个查询限制都有一个索引。这意味着查询优化器一次只能为任何给定的表使用一个索引(如果有的话)。