索引笔记

索引的级数越多,访问速度不一定越快。
举例子记忆:就好像是字典的目录结构一样,如果目录比你的字典内容还大,你觉得能好吗?换位思考,假如内容就10页,而目录用了500页,那么就相当于索引级数(500页)越多,但是访问速度肯定是很慢的,本来10页,我手翻都能翻完,结果索引的级数太多了,访问了半天才找到。总结:还要看数据量是否大。

关于索引的使用要注意几个事项 :
1 首先数据量小的表不需要建立索引,因为小的表即使建立索引也不会有大的用处,还会增加额外的索引开销
2 不经常引用的列不要建立索引,因为不常用,即使建立了索引也没有多大意义
3 经常频繁更新的列不要建立索引,因为肯定会影响插入或更新的效率
思考:表中建立了索引后,导入大量数据为什么会慢?或者说表中建立索引后,为什么更新数据会很慢?答:对已经建立了索引的表中插入数据时,插入一条数据就要对该记录【按索引排序】。因此,导入大量数据的时候速度会很慢,解决办法:在没有任何索引的情况下插入数据,然后再建立索引。而更新就无法避免了。就像3说的一样,经常更新的列就不要建立索引。
举例子:【们】字插入字典里,首先,【们】这个单词要找到【单人旁】,在找到【门】,然后找到页码,然后再插入或更新进去,这就叫【按索引排序】。
4 索引并不是一劳永逸的,用的时间长了需要进行整理或者重建
初学者在Oracle中使用索引,可以使用EM的建议(EM的Advisor Central中找SQL Access Advisor)
注意:有时候查询语句中的索引没有发挥作用,这又是为什么呢?
答:在很多情况下,虽然查询语句使用了索引,但是索引并没有发挥作用。例如:在WHERE条件的LIKE关键字匹配的字符串以”%“开头,这种情况下,索引是不会起到作用的;WHERE条件中使用OR关键字来连接多个查询条件,如果有一个条件没有使用索引,那么其他的索引也不会起作用;多列索引的第一个字段没有使用,那么这个多列索引也不会起作用。
解决办法:根据这些情况,必须对这些语句进行相应的优化。

转载于:https://www.cnblogs.com/MopHunter/p/11165206.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值