zoukankan      html  css  js  c++  java
  • 关于索引

    索引的级数越多,访问速度不一定越快。

    举例子记忆:就好像是字典的目录结构一样,如果目录比你的字典内容还大,你觉得能好吗?

          换位思考,假如内容就10页,而目录用了500页,那么就相当于索引级数(500页)越多,

          但是访问速度肯定是很慢的,本来10页,我手翻都能翻完,结果索引的级数太多了,访问了半天才找到。

    总结:还要看数据量是否大。

    关于索引的使用要注意几个事项 :

    1 首先数据量小的表不需要建立索引,因为小的表即使建立索引也不会有大的用处,还会增加额外的索引开销

    2 不经常引用的列不要建立索引,因为不常用,即使建立了索引也没有多大意义

    3 经常频繁更新的列不要建立索引,因为肯定会影响插入或更新的效率

    思考:表中建立了索引后,导入大量数据为什么会慢?或者说表中建立索引后,为什么更新数据会很慢?

        答:对已经建立了索引的表中插入数据时,插入一条数据就要对该记录【按索引排序】。因此,导入大量数据的时候速度会很慢。

    解决办法:在没有任何索引的情况下插入数据,然后再建立索引。

      而更新就无法避免了。就像3说的一样,经常更新的列就不要建立索引。

    举例子:【们】字插入字典里,首先,【们】这个单词要找到【单人旁】,在找到【门】,然后找到页码,然后再插入或更新进去,这就叫【按索引排序】。

    4 索引并不是一劳永逸的,用的时间长了需要进行整理或者重建。

    初学者在Oracle中使用索引,可以使用EM的建议(EM的Advisor Central中找SQL Access Advisor)

    注意:有时候查询语句中的索引没有发挥作用,这又是为什么呢?

       答:在很多情况下,虽然查询语句使用了索引,但是索引并没有发挥作用。

    例如:在WHERE条件的LIKE关键字匹配的字符串以”%“开头,这种情况下,索引是不会起到作用的;

      WHERE条件中使用OR关键字来连接多个查询条件,如果有一个条件没有使用索引,那么其他的索引也不会起作用;

      多列索引的第一个字段没有使用,那么这个多列索引也不会起作用。

    解决办法:根据这些情况,必须对这些语句进行相应的优化。

  • 相关阅读:
    设计模式命令模式(Command)
    设计模式责任链模式(COR)
    设计模式备忘录模式(Memento)
    设计模式中介者模式(Mediator)
    设计模式策略模式(Strategy)
    设计模式解释器模式(Interpreter)
    设计模式迭代器模式(Iterator)
    设计模式状态模式(State)
    Ext终于开始收费了
    设计模式观察者模式(Observer)
  • 原文地址:https://www.cnblogs.com/yuntianblog/p/13409731.html
Copyright © 2011-2022 走看看