今天看mysql的如何使用索引的文档时,发现了一个地方不太明白机制,所以特地写出来与大家讨论下    /* index = 1 OR index = 2 */
... WHERE index=1 OR A=10 AND index=2
   比如这个表的index1字段和index2字段都分别设置了b-tree索引,按照mysql的官方文档(如下),那么在执行的时候mysql内部的索引机制是采用index = 1 OR index = 2 的方式,难道先用index1检索,再用index2检索,然后做个交?是这样理解吗? mysql官方文档地址:http://dev.mysql.com/doc/refman/4.1/en/mysql-indexes.html

解决方案 »

  1.   

    http://dev.mysql.com/doc/refman/5.0/en/index-merge-union.html
      

  2.   

    1 搂主问题,其实可以从 MySQL 手册里面找到的。 但MySQL 的每个版本每个存储引擎机制都有一点点不同。
    2 从楼主描述,可以知道你讲应该是InnoDB 引擎内容。你可以参考 :5.1 MySQL 手册的 [15.2.13. 表和索引结构]的内容;里面有介绍一些相关机制。
    3 总体来讲,MySQL 都是建议使用 PK 来查询;因为 MySQL 中PK 是一种被称为“集束索引”。