假设有这么个sql查询 select * from table where id=xxxx order by time
这张table上有两个索引,一个是id聚集索引,还有一个是time非聚集索引。
那么我们假设强制它走time非聚集索引,那么执行这个sql的第一步就是直接把排序好的叶子节点拿出来。这个叶子节点的data域存放的是主键名,即id。那么问题来了,接下来要匹配where条件了,是直接在time索引的叶子节点的data域上来where匹配id,还是拿到id再去通过主键索引拿到行数据来where匹配id呢?
思考:select * from table where time=xxxx order by time
,会怎么样?如果上面那个问题的答案是前者(直接在time索引的叶子节点的data域上来where匹配id),那这句sql和上面那句sql的查询效率应该是差不多的?
一只斗牛犬
料青山看我应如是
相关分类