暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

GaussDB云数据库SQL应用系列—索引管理(上)

高斯精选 2023-10-25
309

一、前言

随着互联网的快速发展,数据量呈现爆炸式增长。如何高效地管理和查询这些数据成为了企业面临的重要问题。而数据库索引作为数据库优化的关键手段之一,对于提高数据库性能和查询效率具有重要作用。本文将介绍GaussDB云数据库的索引创建和管理方法,并结合实际应用场景进行分析。

二、注意事项

索引建立在数据库表中的列上。因此,需要注意以下创建因素:

• 在经常需要查询的列上创建,可以加快搜索的速度。

• 在作为主键的列上创建索引,强制该列的唯一性和组织表中数据的排列结构。

• 在经常使用连接的列上创建索引,加快连接的速度。

• 在经常需要根据范围进行搜索的列上创建索引,因为索引已经排序,其指定的范围是连续的。

• 在经常需要排序的列上创建索引,因为索引已经排序,查询时可以利用索引的排序,加快排序查询。

• 为经常出现在关键字ORDER BY、GROUP BY、DISTINCT后面的字段建立索引。

说明

• 索引创建后,系统会主动判断何时引用索引。当系统认为使用索引比顺序扫描更快时,就会使用索引。

• 索引创建后,会和表保持同步以保证能够准确地找到新数据,这样就增加了数据操作的负荷。因此需要定期清理无用的索引。

三、索引创建

创建一张测试

--销售信息全量表(sell_info_full),

CREATE TABLE sell_info_full

(

sell_id int PRIMARY KEY

,sell_date date not null

,goods_id char(20) not null

,goods_name char(20) not null

,goods_number int not null

,sell_goods_amount int not null

,etl_date date not null

);

1、创建普通索引

语法格式:

CREATE INDEX index_name ON table_name (column_name);
--例如,用户经常根据销售的商品编号(good_id)进行查询,那么可在sell_info_full表中创建一个名为idx_good_id的普通索引:

CREATE INDEX idx_good_id ON sell_info_full (goods_id);

2、创建唯一索引

语法格式:

CREATE UNIQUE INDEX unique_index_name ON table_name(column_name);
--例如,在sell_info_full表中创建一个名为idx_sell_id的唯一索引:

CREATE UNIQUE INDEX idx_sell_id ON sell_info_ful(sell_id);

3、创建多字段索引

语法格式:

CREATE INDEX more_column_index ON table_name(column_name1, column_name2);
--例如,用户经常根据销售的商品数量和商品金额范围进行查询访问,则可在sell_info_full表中创建一个多字段索引。

CREATE INDEX more_column_index ON sell_info_full(goods_number,sell_goods_amount);

4、创建部分索引

--如果经常需要查询“某个商品”,例如,goods_name=’商品名称’(替换成具体的名称),可以创建部分索引来提升查询效率。
CREATE INDEX part_index ON sell_info_full(goods_name) WHERE goods_name='商品名称';

5、创建表达式索引

--假如经常需要查询商品加个大于100元的商品销售信息,查询SQL如下(引用一个函数trunc):

SELECT * FROM sell_info_full WHERE trunc(sell_goods_amount)>100;
--创建表达式索引

CREATE INDEX fun_index ON sell_info_full(trunc(sell_goods_amount));

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论