接下来,让我们抛弃数据库的思想,直接思考这条SQL的⼏个关键性问题:
此SQL,覆盖索引idxt1bcd上的哪个范围?
起始范围:记录[2,2,2]是第⼀个需要检查的索引项。...根据SQL,固定了索引的查询范围[(2,2,2),(8,8,8))之后,此索引范围中并不是每条记录都是满⾜where查询条件的。例如:(3,1,1)不满⾜c > 1的约束;(6,4,4)不满⾜d !...在确定了索引中最终能够过滤掉的条件之后,还有哪些条件是索引⽆法过滤的?
此问题的答案显⽽易见,e != ‘a’这个查询条件,⽆法在索引idxt1bcd上进⾏过滤,因为索引并未包含e列。...在理解以上的问题解答的基础上,做⼀个抽象,可总结出⼀套放置于所有SQL语句⽽皆准的where查询条件的提取规则:
所有SQL的where条件,均可归纳为3⼤类
• Index Key (First Key...在上⾯的SQL⽤例中,(3,1,1),(6,4,4)均属于范围中,但是又均不满⾜SQL的查询条件。