求解:关于全索引扫描和全表扫描的疑问
关于全索引扫描和全表扫描的性能比较
查资料说,index比all类型性能高,但是有疑问
例如下面的例子,
create table test (a int(11), b int(11), primary key a(a), index b(b))engine=innodb;
1. select *from test force index (b) order by b
2. select *from test order by b
我的理解是 2的性能比较高:
情况1 用了b索引,减少了排序操作;但是需要再次通过索引定位到主键具体记录,而且这个操作可能有随机甚至重复的I/O;
情况2 要排序;但是能够直接顺序扫描数据表,属于顺序I/O;
当然这需要视具体的环境情况而定。
本人属于初学数据库,希望大侠们帮我解惑~,最好能详细点哈
查资料说,index比all类型性能高,但是有疑问
例如下面的例子,
create table test (a int(11), b int(11), primary key a(a), index b(b))engine=innodb;
1. select *from test force index (b) order by b
2. select *from test order by b
我的理解是 2的性能比较高:
情况1 用了b索引,减少了排序操作;但是需要再次通过索引定位到主键具体记录,而且这个操作可能有随机甚至重复的I/O;
情况2 要排序;但是能够直接顺序扫描数据表,属于顺序I/O;
当然这需要视具体的环境情况而定。
本人属于初学数据库,希望大侠们帮我解惑~,最好能详细点哈
作者: cglover 发布时间: 2011-06-01
上面我举例子有点问题,改下
create table test (a int(11), b int(11), c int(11), primary key a(a), index b(b))engine=innodb;
create table test (a int(11), b int(11), c int(11), primary key a(a), index b(b))engine=innodb;
作者: cglover 发布时间: 2011-06-01