openGauss5.1数据库管理指南:创建和管理索引

2023年 10月 25日 21.8k 0

  • 创建一个普通表

    openGauss=# CREATE TABLE tpcds.customer_address_bak AS TABLE tpcds.customer_address;
    INSERT 0 0

  • 创建普通索引

    如果对于tpcds.customer_address_bak表,需要经常进行以下查询。

    SELECT ca_address_sk FROM tpcds.customer_address_bak WHERE ca_address_sk=14888;

    通常,数据库系统需要逐行扫描整个tpcds.customer_address_bak表以寻找所有匹配的元组。如果表tpcds.customer_address_bak的规模很大,但满足WHERE条件的只有少数几个(可能是零个或一个),则这种顺序扫描的性能就比较差。如果让数据库系统在ca_address_sk属性上维护一个索引,用于快速定位匹配的元组,则数据库系统只需要在搜索树上查找少数的几层就可以找到匹配的元组,这将会大大提高数据查询的性能。同样,在数据库中进行更新和删除操作时,索引也可以提升这些操作的性能。

    使用以下命令创建索引。

    openGauss=# CREATE INDEX index_wr_returned_date_sk ON tpcds.customer_address_bak (ca_address_sk);
    CREATE INDEX

  • 创建多字段索引

    假如用户需要经常查询表tpcds.customer_address_bak中ca_address_sk是5050,且ca_street_number小于1000的记录,使用以下命令进行查询。

    SELECT ca_address_sk,ca_address_id FROM tpcds.customer_address_bak WHERE ca_address_sk = 5050 AND ca_street_number < 1000;

    使用以下命令在字段ca_address_sk和ca_street_number上定义一个多字段索引。

    openGauss=# CREATE INDEX more_column_index ON tpcds.customer_address_bak(ca_address_sk ,ca_street_number );
    CREATE INDEX

  • 创建部分索引

    如果只需要查询ca_address_sk为5050的记录,可以创建部分索引来提升查询效率。

    openGauss=# CREATE INDEX part_index ON tpcds.customer_address_bak(ca_address_sk) WHERE ca_address_sk = 5050;
    CREATE INDEX

  • 创建表达式索引

    假如经常需要查询ca_street_number小于1000的信息,执行如下命令进行查询。

    SELECT * FROM tpcds.customer_address_bak WHERE trunc(ca_street_number) < 1000;

    可以为上面的查询创建表达式索引:

    openGauss=# CREATE INDEX para_index ON tpcds.customer_address_bak (trunc(ca_street_number));
    CREATE INDEX

  • 删除tpcds.customer_address_bak表

    openGauss=# DROP TABLE tpcds.customer_address_bak;
    DROP TABLE

相关文章

Oracle如何使用授予和撤销权限的语法和示例
Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
社区版oceanbase安装
Oracle 导出CSV工具-sqluldr2
ETL数据集成丨快速将MySQL数据迁移至Doris数据库

发布评论