【发布时间】:2014-05-27 15:56:29
【问题描述】:
我读到 SQL 由 MySQL 解析,并与存储引擎交互,例如 InnoDB。
似乎以下内容:WHERE some_id < 5 AND some_id <> 1 只有some_id < 5 被传递给存储引擎,而some_id <> 1 在服务器上被过滤。
据我了解,这是因为存储引擎 api 提供了一种方法,仅用于获取索引为“小于”的“某物”以实现范围搜索。
但我无法理解的是为什么 API 也不提供执行范围 AND 排除某些值的选项。
这是底层数据结构的固有限制吗?谁能解释一下?
【问题讨论】:
-
这是您正在运行的实际查询吗?查询的 and 部分将被执行。 MySQL 不会过滤 where 子句并删除一些查询字符串。我怀疑您的数据不包含
some_id = 1 -
@Namphibian: 不是
=1,而是<> 1
标签: mysql data-structures indexing innodb b-tree