MySQL索引问题

时间:2011-01-25 18:43:51

标签: mysql indexing

我最近一直在阅读MySQL中的索引,其中一些原则非常简单但是一个概念仍然困扰着我:基本上,如果在一个假设的表格中,比方说,10列,我们有两个单一的 - 列索引(分别用于column01和column02),加上一个主键列(其他一些列),然后它们将用于这样的简单SELECT查询中:

SELECT * FROM table WHERE column01 = 'aaa' AND column02 = 'bbb'

看着它,我的第一个本能告诉我,第一个索引将检索满足第一个条件的第二个索引将检索一组行(或InnoDB中的主键,如果我有了正确的想法)得到另一套。最终的结果集只是这两者的交集。在我经历过的书中,我找不到关于这个特定场景的任何内容。当然,对于这个特定的查询,两列上的一个索引似乎是最好的选择,但是如果我尝试使用上面描述的两个索引,我正在努力理解这整个过程背后的真实过程。

2 个答案:

答案 0 :(得分:1)

它只会使用一个索引。如果希望能够索引正在测试的每个列,则需要创建多个列的复合索引。您可能需要阅读manual以了解MySQL如何使用每种类型的索引,以及如何正确排序复合索引以最佳地利用它。

答案 1 :(得分:1)

  

这实际上是最常见的问题   关于索引:是否更好   有一个索引包含所有列或一个   每列的个别索引?

http://use-the-index-luke.com/sql/where-clause/searching-for-ranges/index-combine-performance