数据仓库服务 GAUSSDB(DWS)-CREATE INDEX:参数说明

时间:2024-11-28 17:38:57

参数说明

  • UNIQUE

    创建唯一性索引,每次添加数据时检测表中是否有重复值。如果插入或更新的值会引起重复的记录时,将导致一个错误。

    目前只有行存表B-tree索引和列存表的B-tree索引支持唯一索引。

  • schema_name

    要创建的索引所在的模式名。指定的模式名需与表所在的模式相同。

  • index_name

    要创建的索引名,索引的模式与表相同。

    取值范围:字符串,要符合标识符的命名规范。

  • table_name

    需要为其创建索引的表的名字,可以用模式修饰。

    取值范围:已存在的表名。

  • USING method

    指定创建索引的方法。

    取值范围:

    • btree:B-tree索引使用一种类似于B+树的结构来存储数据的键值,通过这种结构能够快速的查找索引。btree适合支持比较查询以及查询范围。
    • gin:GIN索引是倒排索引,可以处理包含多个键的值(比如数组)。
    • gist:Gist索引适用于几何和地理等多维数据类型和集合数据类型。
    • Psort:Psort索引。针对列存表进行局部排序索引。

    行存表支持的索引类型:btree(行存表缺省值)、gin、gist。列存表支持的索引类型:Psort(列存表缺省值)、btree、gin。

  • column_name

    表中需要创建索引的列的名字(字段名)。

    如果索引方式支持多字段索引,可以声明多个字段。最多可以声明32个字段。

  • expression

    创建一个基于该表的一个或多个字段的表达式索引,通常必须写在圆括弧中。如果表达式有函数调用的形式,圆括弧可以省略。

    表达式索引可用于获取对基本数据的某种变形的快速访问。比如,一个在upper(col)上的函数索引将允许WHERE upper(col) = 'JIM'子句使用索引。

    在创建表达式索引时,如果表达式中包含IS NULL子句,则这种索引是无效的。此时,建议用户尝试创建一个部分索引。

  • COLLATE collation

    COLLATE子句指定列的排序规则(该列必须是可排列的数据类型)。如果没有指定,则使用默认的排序规则。

  • opclass

    操作符类的名字。对于索引的每一列可以指定一个操作符类,操作符类标识了索引那一列的使用的操作符。例如一个B-tree索引在一个四字节整数上可以使用int4_ops;这个操作符类包括四字节整数的比较函数。实际上对于列上的数据类型默认的操作符类是足够用的。操作符类主要用于一些有多种排序的数据。例如,用户想按照绝对值或者实数部分排序一个复数。能通过定义两个操作符类然后在建立索引时选择合适的类。

  • ASC

    指定按升序排序 (默认)。本选项仅行存支持。

  • DESC

    指定按降序排序。本选项仅行存支持。

  • NULLS FIRST

    指定空值在排序中排在非空值之前,当指定DESC排序时,本选项为默认的。

  • NULLS LAST

    指定空值在排序中排在非空值之后,未指定DESC排序时,本选项为默认的。

  • NULLS [ NOT ] DISTINCT | NULLS IGNORE

    指定Unique唯一索引中索引列NULL值的处理方式。

    默认取值:该参数默认取值为空,即NULL值可重复插入。

    在对插入的新数据和表中原始数据进行列的等值比较时,对于NULL值有以下三种处理方式:

    • NULLS DISTINCT:NULL值互不相等,即NULL值可重复插入。
    • NULLS NOT DISTINCT:NULL值相等。若索引列全为NULL,则NULL值不可重复插入;部分索引列为NULL,只有非NULL值不相等,才可成功插入数据。
    • NULLS IGNORE:在等值比较时跳过NULL值。若索引列全为NULL,则NULL值可重复插入;部分索引列为NULL,只有非NULL值不相等,才可成功插入数据。

    三种处理方式具体的行为如下表所示:

    表1 唯一索引中索引列NULL值的处理方式

    字段控制

    索引列全为NULL

    部分索引列为NULL

    NULLS DISTINCT

    可重复插入

    可重复插入

    NULLS NOT DISTINCT

    不可重复插入

    非NULL值相等,不可插入;非NULL值不相等,则插入成功

    NULLS IGNORE

    可重复插入

    非NULL值相等,不可插入;非NULL值不相等,则插入成功

  • COMMENT 'text'

    指定索引的注释信息。

  • WITH ( {storage_parameter = value} [, ... ] )

    指定索引方法的存储参数。

    取值范围:

    只有GIN索引支持FASTUPDATE,GIN_PENDING_LIST_LIMIT参数。GIN和Psort之外的索引都支持FILLFACTOR参数。所有索引都支持INVISIBLE参数。
    • FILLFACTOR

      一个索引的填充因子(fillfactor)是一个介于10和100之间的百分数。

      取值范围:10~100

    • FASTUPDATE

      GIN索引是否使用快速更新。

      取值范围:ON,OFF

      默认值:ON

    • GIN_PENDING_LIST_LIMIT

      当GIN索引启用fastupdate时,设置该索引pending list容量的最大值。

      取值范围:64~INT_MAX,单位KB。

      默认值:gin_pending_list_limit的默认取决于GUC中gin_pending_list_limit的值(默认为4MB)

    • INVISIBLE

      控制优化器是否生成索引扫描相关计划。

      取值范围:

      • ON表示不生成索引扫描相关计划。
      • OFF表示生成索引扫描相关计划。

      默认值:OFF

  • WHERE predicate

    创建一个部分索引。部分索引是一个只包含表的一部分记录的索引,通常是该表中比其他部分数据更有用的部分。例如,有一个表,表里包含已记账和未记账的订单,未记账的订单只占表的一小部分而且这部分是最常用的部分,此时就可以通过只在未记账部分创建一个索引来改善性能。另外一个可能的用途是使用带有UNIQUE的WHERE强制一个表的某个子集的唯一性。

    取值范围:predicate表达式只能引用表的字段,它可以使用所有字段,而不仅是被索引的字段。目前,子查询和聚集表达式不能出现在WHERE子句里。

  • PARTITION index_partition_name

    索引分区的名称。

    取值范围:字符串,要符合标识符的命名规范。

  • UNUSABLE

    建表或者索引分区上的索引时支持创建状态为UNUSABLE的索引。该参数仅8.3.0.100及以上集群版本支持。

support.huaweicloud.com/sqlreference-830-dws/dws_06_0165.html