谈谈我对SQL索引的理解

来源:百度知道 编辑:UC知道 时间:2024/07/07 23:17:29
我是初学着,我说下我对索引的简单理解,有错希望指正哈

比如对同一张表进行如下查询:(id是主键值)
1、对id不设置索引,执行下面的SQL查询
select name,pwd from admin where id>5

2、设置id为索引列,执行下面的SQL查询
select name,pwd from admin where id>5

也就是说SQL语句一样,但是后一句加了所以,是不是说下面的处理速度就更快了?

楼主的整理正确!
1、索引是根据查询语句来建立的;
2、通常后一次有索引的会比前一次快,之于快多少取决于数据量。
比如:100条数据,没有索引时平均需要查询50次(从头到尾逐个比较),有索引则只需要比较大约7次(类似二分查找法);
如果是1000条数据的话,没有索引时平均需要查询500次,有索引则只需要比较大约11~12次。
当然对于数据量巨大(超百万行)的数据表,数据库中的索引可能用B+树,那么通常约4次比较就可确定数据范围(在200条以内)。

另,要注意的是查询语句写得不好,系统就无法利用索引,比如:把字段名放在了一个函数中、某些“<>”、等等,这方面的内容可以在网上搜到不少的。

索引你可以理解为词典的目录,所以,索引最大的用处莫过于加快查询速度。

建索引的过程不会移动表本身的数据,索引只是记录每条记录的物理位置。如果你查询中指定id>5,那么数据库引擎就检索索引,发现数据实际的物理位置,直接去读取记录...

这是最简单的说明而已,实际情况比这个复杂,不同类型的索引又稍有不同。