数据库的索引浅谈

[quote]
数据库表的信息是存在在文件中的,每个文件中有很多记录,你添加一条记录,文件中就会多一条记录。

如果要查找一条记录怎么查找呢?你会打开文件读取文件内容,然后看看是不是你要的记录,查找任何记录都要从前向后去比较。就像一个房间有很多人,你知道要找的人在这个房间,但是具体在什么位置你不知道,你只有一个一个看,直到找到你要找的人,运气好的话,第一个人就是你要找的,运气不好,最后一个人才是你要找的。效率低不低?

如何解决这个问题呢?如果能记录每条记录的位置信息是不是就可以很快找到呢?例如房间中有很多人,你可以制作一个座位图,这样要找哪个人,先在图上找出这个人在什么地方,然后直接到相应的位置找就可以找到。这就是索引。如果座位图上用的是名字和位置信息,要是根据名字可以很快找到这个人,要根据编号就没有办法查找了。所以索引是根据记录的某个属性(可以是多个)来建立的。

索引为什么能提高效率呢?因为查找的时候,可以直接定位,不用遍历,所以查找会非常快。当然如果你要查询某个表的所有记录对速度不会用太大影响。在表连接的时候是如何提交效率的呢?遍历第一个表时候,对于每一条记录,都会根据连接字段去查找关联表,如果能直接定位就可以直接读取,如果不能直接定位,在需要遍历第二张表,表中有多少记录,就要遍历多少次。所以如果两张表分别有3000条记录,有索引(在关联字段上)需要找3000次,如果没有索引需要找3000*3000/2次,所以效率差别会非常大。





当然也不是说索引越多越好,因为建立索引是需要成本的,包括需要存储索引列与记录的对应关系,另外在对数据进行增、删、改的时候都要对索引进行维护,会影响效率。


[/quote]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值