数据库教程:简单谈谈MySQL的loose index scan分享

众所周知,InnoDB采用IOT(indexorganizationtable)即所谓的索引组织表,而叶子节点也就存放了所有的数据,这就意味着,数据总是按照某种顺序存储的。所以问题来了,如果是这样一个语句,执行起来应该是怎么样的呢?语句如下:

selectcount(distincta)fromtable1;

    列a上有一个索引,那么按照简单的想法来讲,如何扫描呢?很简单,一条一条的扫描,这样一来,其实做了一次索引全扫描,效率很差。这种扫描方式会扫描到很多很多的重复的索引,这样说的话优化的办法也是很容易想到的:跳过重复的索引就可以了。于是网上能搜到这样的一个优化的办法:

selectcount(*)from(selectdistinctafromtable1)t;

   从已经搜索到的资料看,这样的执行计划中的extra就从usingindex变成了usingindexforgroup-by。

   但是,但是,但是,好在我们现在已经没有使用5.1的版本了,大家基本上都是5.5上述就是数据库技术:简单谈谈MySQL的loose index scan分享的全部内容,如果对大家有所用处且需要了解更多关于mysql数据库学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/dtteaching/911618.html

(0)
上一篇 2021年10月25日
下一篇 2021年10月25日

精彩推荐