当前位置:   article > 正文

达梦数据库-SQL索引相关知识点_达梦数据库的索引标识的最大长度是多少

达梦数据库的索引标识的最大长度是多少

作为一个达梦的初学者,写这篇文章的目的是为了把学到的新知识做个总结梳理,在整理中查缺补漏,也希望大家看了我的文章能有收获,如有错误的地方欢迎指出。

索引概述:

        索引是与表相关的可选的结构(聚簇索引除外),索引的作用是为了加快对表的查询,更快速的定位到数据。数据库对表做DML操作,默认的维护索引。

索引分类:

  • 聚集索引:每一个普通表有且只有一个聚集索引;
  • 唯一索引:索引数据根据索引键唯一;
  • 函数索引:包含函数/表达式的预先计算的值;
  • 位图索引:对低基数的列创建位图索引;
  • 位图连接索引:针对两个或者多个表连接的位图索引,主要用于数据仓库中;
  • 全文索引:在表的文本列上而建的索引。

索引维护:

     创建索引

  1. CREATE [OR REPLACE] [CLUSTER|NOT PARTIAL][UNIQUE | BITMAP| SPATIAL] INDEX <
  2. 索引名>
  3. ON [<模式名>.]<表名>(<索引列定义>{,<索引列定义>}) [GLOBAL] [<STORAGE 子句>]
  4. [NOSORT] [ONLINE];
  5. <索引列定义>::= <索引列表达式>[ASC|DESC]
  6. <STORAGE 子句>::=<STORAGE 子句 1>|<STORAGE 子句 2>
  7. <STORAGE 子句 1>::= STORAGE(<STORAGE1 项> {,<STORAGE1 项>})
  8. <STORAGE1 项> ::=
  9. [INITIAL <初始簇数目>] |
  10. [NEXT <下次分配簇数目>] |
  11. [MINEXTENTS <最小保留簇数目>] |
  12. [ON <表空间名>] |
  13. [FILLFACTOR <填充比例>]|
  14. [BRANCH <BRANCH 数>]|
  15. [BRANCH (<BRANCH 数>, <NOBRANCH 数>)]|
  16. [NOBRANCH ]|
  17. [<CLUSTERBTR>]|
  18. [SECTION (<区数>)]|
  19. [STAT NONE]
  20. <STORAGE 子句 2>::= STORAGE(<STORAGE2 项> {,<STORAGE2 项>})
  21. <STORAGE2 项> ::= [ON <表空间名>]|[STAT NONE]
  22. 参数
  23. 1. UNIQUE 指明该索引为唯一索引;
  24. 2. BITMAP 指明该索引为位图索引;
  25. 3. SPATIAL 指明该索引为空间索引;
  26. 4. CLUSTER 指明该索引为聚簇索引(也叫聚集索引),不能应用到函数索引中;
  27. 5. NOT PARTIAL 指明该索引为非聚簇索引,缺省即为非聚簇索引;
  28. 6. <索引名> 指明被创建索引的名称,索引名称最大长度128字节;
  29. 7. <模式名> 指明被创建索引的基表属于哪个模式,缺省为当前模式;
  30. 8. <表名> 指明被创建索引的基表的名称;
  31. 9. <索引列定义> 指明创建索引的列定义。其中空间索引列的数据类型必须是DMGEO
  32. 包内的空间类型,如ST_GEOMETRY等;
  33. 10. <索引列表达式> 指明被创建的索引列可以为表达式;
  34. 11. GLOBAL 指明该索引为全局索引,仅堆表的水平分区表支持该选项,非水平分区表忽略该选项。 堆表上的PRIMARY KEY会自动变为全局索引;
  35. 12. ASC 递增顺序;
  36. 13. DESC 递减顺序;
  37. 14. <STORAGE子句> 普通表的索引参考<STORAGE子句1>, HUGE表的索引参考<STORAGE子句2>
  38. 15. <STORAGE子句1>中, BRANCH和NOBRANCH只能用以指定聚集索引;
  39. 16. NOSORT 指明该索引相关的列已按照索引中指定的顺序有序,不需要在建索引时排序,提高建索引的效率。若数据非有序却指定了NOSORT,则在建索引时会报错;
  40. 17. ONLINE 表示支持异步索引,即创建索引过程中可以对索引依赖的表做增、删、改操作。

        重建索引 

  1. SP_REBUILD_INDEX(SCHEMA_NAME varchar(256), INDEX_ID int);
  2. 或者
  3. alter index ind_emp rebuild online;

         删除索引

drop index ind_emp;

 索引注意事项

      1、当模糊查询时,where条件为A like '%xxx'时是无法使用到A列上的索引。解决办法为建立函数索引,然后改写对应sql条件;若无法改写sql可以通过调整参数LIKE_OPT_FLAG。         LIKE_OPT_FLAG参数介绍:值为0为不优化;1:对于LIKE 表达式首尾存在通配符的情况,优化为POSITION()函数;对于 LIKE 表达式首部存在通配符,并且条件列存在REVERSE()函数索引时,优化为 REVERSE()函数;2:对于 COL1 LIKE COL2 || '%'的情况,优化为POSITION()函数;4:对于 COL1 LIKE ‘A’||‘B%’的情况,优化为 COL1 LIKE ‘AB%’。

开启参数后创建函数索引:

CREATE INDEX index_name ON table_name(POSITION('XXX',A));

      2、存在空值的列上创建索引时需要注意,空值数据信息是不被记录在索引里的,所以当涉及到这些数据的查询时,是无法使用索引的,可以利用一些小技巧,将null的信息也存放在索引中,如创建nvl(列名,0) 或者如下图

CREATE INDEX index_name ON table_name(列名,常量);

      3、不支持建立分区函数索引

      4、若函数索引中使用的确定性函数发生了变更或删除,用户需手动重建函数索引

      5、CLOB和TEXT只能建立全文索引、BLOB不能建立任何索引

      6、位图索引:创建方式和普通索引一致, 对低基数的列创建位图索引,能够有效提高,基于该列的查询效率,特别注意位图索引会严重影响到插入和更新操作,不能在业务表上建立。位图索引还具有以下约束:

        1) 支持普通表、 堆表和水平分区表创建位图索引;

        2) 不支持对大字段创建位图索引;

        3) 不支持对计算表达式列创建位图索引;

        4) 不支持在 UNIQUE 列和 PRIMARY KEY 上创建位图索引;

        5) 不支持对存在 CLUSTER KEY 的表创建位图索引;

        6) 仅支持单列或者不超过 63 个组合列上创建位图索引;

        7) MPP 环境下不支持位图索引的创建;

        8) 不支持快速装载建有位图索引的表;

        9) 不支持全局位图索引;

        10) 包含位图索引的表不支持并发的插入、删除和更新操作。

       7、空间索引: 创建时需指定SPATIAL关键字,删除方式和普通索引一样。 只能在DMGEO包内的空间类型的列上创建,如果使用DMGEO包内的空间位置进行查询时,使用空间索引能够提高查询效率。空间索引具有以下约束:

         1) 只支持在空间类型列上创建;

         2) 不支持使用 ONLINE 选项异步方式创建;

         3) 不支持在水平分区表上创建空间索引;

         4) 不支持在 MPP 环境和复制环境下创建空间索引;

         5) 空间索引不支持组合索引,只能在一个列上创建;

         6) 不支持在 4K 的页上建立空间索引。

达梦社区地址:https://eco.dameng.com

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/630273
推荐阅读
相关标签
  

闽ICP备14008679号