今天看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
2 从楼主描述,可以知道你讲应该是InnoDB 引擎内容。你可以参考 :5.1 MySQL 手册的 [15.2.13. 表和索引结构]的内容;里面有介绍一些相关机制。
3 总体来讲,MySQL 都是建议使用 PK 来查询;因为 MySQL 中PK 是一种被称为“集束索引”。