zoukankan      html  css  js  c++  java
  • oracle 索引 。其中全文检索最变态

    全文检索

    位图索引

    B

    全文检索
    很少使用,如果产品上使用 大家可以用Lcunce这些应用
    如果非要在数据库做这个采用
    就把用一个全文检索索引

    检索索引 不会像其他的索引创建一个对象
    他会创建十个相关的对象。

    十张的其中一张表
    存在形式如下
    Dtaken_text token_last tokent_count
    是 1 1
    是一个 1 1
    我是 1 1
    我是一个 1 1
    通过形式就猜到冗余存储

    如果表数据10M 索引表估计要50m

    大家会想问like 会用全文索引 实际是不会的
    下面方法使用
    select * form t where contains("name","DBA")>0

    我插入一条sql 会直接有索引吗
    答案 可能你猜错了 没有的
    需要手工同步
    alter index t_idx_rebuild parameters('sync');

    手工同步有时间也是优势,以后讲sql优化方案 会讲到的。

    删除 更新同样需要公共同步
    当然oracle 可以自动同步,只是默认没有开启。

    全文索引 操作量太大。

    位图索引

    在大量相同数据时B树索引是非常低效的。

    位图索引存款空间小

    对 or比较高效。
    位图索引适合数据仓库
    不适合 oltp

    位图索引 用在下面情况
    1.重复率高的数据
    2.特定类型的查询。 对 or比较高效。
    3.联合索引

    B树索引

    唯一索引 和主键的区别。主键侧重的外键, 唯一索引强调索引。

    采用数据结构B树索引。

    大量插入 压力很大。

    Hive索引的弊端:
    – 每次查询时候都要先用一个job扫描索引表,如果索引列的值非常稀疏,那么索引表本身也会非常大
    – 索引表不会自动rebuild,如果表有数据新增或删除,那么必须手动rebuild索引表数据


    索引是传统RDBMS的标准技术,用来加速查询
     Hive自0.7版本开始支持索引,但提供的功能很有限,效率也并不高,因此Hive索引很少使用
     Hive索引原理:
    – 在指定列上建立索引,生成一张索引表(Hive的一张物理表),记录以下三个字段:索引列的值、该值
    对应的HDFS文件路径、该值在文件中的偏移量
    – 在执行索引字段查询时候,首先额外生成一个MapReduce job,根据对索引列的过滤条件,从索引表中
    过滤出索引列的值对应的hdfs文件路径及偏移量,输出到hdfs上的一个文件中,然后根据这些文件中的
    hdfs路径和偏移量,筛选原始input文件,生成新的split,作为整个job的split,达到不用全表扫描的目的

  • 相关阅读:
    Git-本地项目和远程项目关联
    P1-Linux下安装MySQL及登录用户配置
    P2-Centos中安装vsftpd
    ElasticSearch安装及HEAD插件配置
    ArrayList源码分析
    Maven的继承以及import作用域
    单例模式浅析
    Vim快捷键记录(工作中遇到)
    OSX下 pip更新及安装python库
    统计工具之QQ图
  • 原文地址:https://www.cnblogs.com/itxuexiwang/p/6286133.html
Copyright © 2011-2022 走看看