面试官:回去等通知吧
所以特意看了下,无非就是2个名词,1个是索引跳跃扫描(INDEX SKIP SCAN),一个是mysql复合索引,所以今天我们来讲讲这个东西....索引跳跃扫描是oracle 9i之后提供的新功能,适用于所有的复合B树索引,包含了唯一索引和非唯一索引
当where语句的查询条件不存在索引的前导列(即前缀),也可以适用该索引
例如:test表中存在b...=1 之后获得结果
当然,优化器会根据预估数进行优化,如果t1数据量够大,也可能不走索引
mysql
回到mysql中,mysql中,在8.0.13版本开始,也提供了类似的跳跃扫描,但是和oracle...这里面有个比较重要的点,查询时仅能使用索引中的列,也就是说,不能select * ,只能select 索引列+主键
同时,在我的测试中,只要是select 索引列,不管是5.0还是8.0,都可以走到索引...(但这并不能说明5.0的索引优化比8.0的好):
总结
总之,在mysql8中,实现了跳跃扫描,但是局限性大,用处不大,不如oracle
如果有查询索引的需求,还是自己想办法优化,避免没有前缀条件的情况吧