查询sql没有过滤条件,也就是说要找出表中所有记录。这种情况下不走索引不是应该比走索引要快一些吗?毕竟走索引还多了N步对B+树的I/O操作呀

来源:3-8 索引额外的问题之如何调优Sql

慕虎7161837

2019-08-25

写回答

2回答

慕虎7161837

提问者

2019-09-03

//img.mukewang.com/szimg/5d6e262409274e7409400204.jpg

//img1.sycdn.imooc.com/szimg/5d6e26240980ff6208810192.jpg

这两种查询不都是全查询吗?为什么一个走索引,一个不走索引呢?其中id是主键,abz没有约束和索引。Innodb引擎


0
3
翔仔
回复
YogurtJ
同学好,这里主要是想通俗地去做解释,毕竟索引涉及到了内存,而且即使之前不在内存,找数据的时候也会读入到内存里,通过索引快速进行定位
2020-02-17
共3条回复

翔仔

2019-08-25

同学好,如果都是全表扫描,理论上不走索引比索引确实要快一些,同学可以尝试一下,全表扫描基本是不走索引的提交

0
2
翔仔
回复
慕娘7010603
由于索引扫描后要利用索引中的指针去逐一访问记录,假设每个记录都使用索引访问,则读取磁盘的次数是查询包含的记录数T,而如果表扫描则读取磁盘的次数是存储记录的块数B,如果T>B 的话索引就没有优势了。全表扫描虽然走得磁盘读取,但是是顺序读取,不像索引是随机读取
2020-03-10
共2条回复

剑指Java面试-Offer直通车 百度资深面试官授课

招聘季即将到来,让百度资深面试官来为你的高薪Offer保驾护航

8427 学习 · 1870 问题

查看课程