用上索引就一定比全表扫描快?

共 1084字,需浏览 3分钟

 ·

2020-07-28 16:47

点击蓝色“有关SQL”关注我哟

加个“星标”,天天与10000人一起快乐成长

图 | 榖依米


魔都已经入夏了。


在外 5 分钟,全身都能湿透的季节终于还是到来了。作为行政的小C,原本在空调下吹着风,贴着各处提交来的发票,倒也不算太糟糕。


正应了那句老话,“树欲止,而风不静;人欲凉,而事不遂。”上头来了个电话,可把小C给着急了。“在半小时内,搞定50杯星冰乐。口味发你邮箱了”


“就算 2 分钟一杯,50杯也得 100 分钟,半小时才30分钟,怎么可能嘛?”想虽这么想,小C还是把邮箱里的清单打印出来了。好在是CBD,门口就是长长的南京路,出发。


刚走出门口,小C又折回来了。平时奶茶喝得多,星巴克可不常去,店在哪呢?“还是去问问星巴克常客L”


小C走近L,“最近的星巴克在哪里啊,L?”


“怎么,想请我喝咖啡了?”

“多你一杯不多,老板在半小时内要50杯”

“公司对面的中信泰富广场,一楼有店”


谢谢两字还在空中飘着呢,小C已经人在门外了。

“不对,50杯,一家店来不及做啊”,L刚想提醒她,却连背影都看不见了。


于是,L 在白纸上这么画着:



“ 对面街上,至少有5家星巴克,假如每家分配10杯,那么顶多在 20 分钟内全部搞定。但小C,并不常喝,肯定不知道路线。那么她会买完10杯,回公司,再要个地址,再去买10杯,如此循环 5 次,人不仅跑累了,还容易把咖啡品质给搞砸咯。从第一杯等到第五十杯做完时,冰沙至少化了一半,那口味跟糖水没啥区别啦。”


“ 那么假如我告诉她 5 家挨着比较近的店,让她逐一到店,并行下单,每家10杯,送货上门,岂不是又轻松,咖啡还好喝。 ”


所以,小C的行走路径将会是这样的:



想来这和按照索引去找数据是一个道理。如果都要按照索引去找数据,就跟一家店买10杯一样,买完了回家,再去买一趟。这样循环几回,时间都浪费在了路上。而如果采用扫描全表的方式,从街头走到街尾,看到店就下单10杯,这样,连着5家店就可以完成任务了。


L 不禁笑了,“数据库的效率问题,还能用在买咖啡上,天才。”于是,编辑好微信,就给小C发了过去……




--完--





往期精彩:


本号精华合集(二)

如何写好 5000 行的 SQL 代码

如何提高阅读 SQL 源代码的快感

我在面试数据库工程师候选人时,常问的一些题

零基础 SQL 数据库小白,从入门到精通的学习路线与书单











浏览 29
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报