我觉得我对MySQL索引很相识,直到我碰着了阿里的口试官
假如没有行使索引下推技能,则MySQL会通过zipcode='95054'从存储引擎中查询对应的数据,返回到MySQL处事端,然后MySQL处事端基于lastname LIKE '%etrunia%'和address LIKE '%Main Street%'来判定数据是否切合前提。 假如行使了索引下推技能,则MYSQL起首会返回切合zipcode='95054'的索引,然后按照lastname LIKE '%etrunia%'和address LIKE '%Main Street%'来判定索引是否切合前提。假如切合前提,则按照该索引来定位对应的数据,假如不切合,则直接reject掉。有了索引下推优化,可以在有like前提查询的环境下,镌汰回表次数。 Q:你们建设的那么多索引,到底有没有见效,可能说你们的SQL语句有没有行使索引查询你们有统计过吗? A:这个还没有统计过,除非碰着慢SQL的时辰我们才会去排查 Q:那排查的时辰,有什么本领可以知道有没有走索引查询呢? A:可以通过explain查察sql语句的执行打算,通过执行打算来说明索引行使环境 Q:那什么环境下会产生显着建设了索引,可是执行的时辰并没有通过索引呢? A:(或许记得和优化器有关,可是这个题目并没有答复好) 查询优化器? 一条SQL语句的查询,可以有差异的执行方案,至于最终选择哪种方案,必要通过优化器举办选择,选择执行本钱最低的方案。 在一条单表查询语句真正执行之前,MySQL的查询优化器会找出执行该语句全部也许行使的方案,比拟之后找出本钱最低的方案。 这个本钱最低的方案就是所谓的执行打算。优化进程大抵如下: 1、按照搜刮前提,找出全部也许行使的索引 2、计较全表扫描的价钱 3、计较行使差异索引执行查询的价钱 4、比拟各类执行方案的价钱,找出本钱最低的那一个 Q:哦,索引有关的常识我们暂且就问这么多吧。你们线上数据的事宜断绝级别是什么呀? A:(后头关于事宜断绝级此外题目了,就不睁开了) 感受是由于我答复的不足好,假如这几个索引题目我城市的话,他还会追问更多,生怕会被虐的更惨 5 .总结&感悟以上,就是一次口试中关于索引部门常识的题目以及我清算的谜底。感受这次口试进程中关于索引的常识,本身或容许以或许答复的内容占70%阁下,可是自信完全答对的内容只占50%阁下,看来本身索引有关的常知趣识的照旧不足多。 通过这次口试,发明像阿里这种大厂对付底层常识照旧较量垂青的,我早年觉得关于索引最多也就问一下Hash和B+有什么区别,没想到最后都能问到查询优化器上面。 最后,不管本次口试能不能通过,都很是感激有这样一次机遇,可以让本身看到本身的不敷。通过这次口试,我也收成了许多对象。加油! 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |