南大通用GBase 8c数据库在集中式场景下的SQL索引与优化(上)

360影视 国产动漫 2025-03-13 17:27 3

摘要:在关系型数据库管理系统(RDBMS)中,性能优化一直是提升系统响应速度和处理效率的关键。对于GBase这类高性能数据库,优化查询效率不仅依赖于硬件配置、数据库设计,还在很大程度上依赖于SQL查询语句的编写以及索引的合理使用。本文将介绍GBase 8c集中式场景

在关系型数据库管理系统(RDBMS)中,性能优化一直是提升系统响应速度和处理效率的关键。对于GBase这类高性能数据库,优化查询效率不仅依赖于硬件配置、数据库设计,还在很大程度上依赖于SQL查询语句的编写以及索引的合理使用。本文将介绍GBase 8c集中式场景下通过添加、修改索引、调整SQL语句以及修改函数等来优化性能的方法。


索引是加速数据库查询的常用手段。一个合理的索引能够显著提升查询效率,尤其是对于复杂查询、聚合查询和关联查询等。通过添加索引,可以使SQL查询更加高效地利用数据库存储结构,从而提高执行速度。

在GBase 8c中,为了使索引匹配到SQL查询,首先要对查询的频繁使用字段进行分析。例如,如果查询中涉及了某个字段的条件过滤、排序或连接操作,则为该字段添加索引是一个优化的方案。

对于该语句,反馈返回结果超时,查看表ad_acc_entrie,发现该表有1.7亿条数据,表有77个字段。查看执行计划,显示为通过顺序查找。

在该entrie_no字段上建立索引。

create index ad_acc_entrie_local_ad_acc_entrie_indx_5 on aes.ad_acc_entrie(entrie_no);

创建成功后,select语句响应时间降低到了ms级别。


根据SQL,添加索引改变执行计划的类型

索引中的字段不匹配或匹配度低时,可以采用修改索引字段或增加新索引等方式进行优化。

例如,考虑以下SQL查询,查询走的是索引查找,运行时间为1105ms。

分析上面的执行计划,发现where条件中,只有extractdate字段匹配到了索引,走的是索引内的条件匹配。观察到batchno字段是in结构,而且还遇到过in字段中的字符串多大500个的情况,所以对该字段单独创建了索引。

create index aesdeetailpart_is_aesfeedetail_batchno on aesdeetailpart(batchno) local;

分析上面的索引可以看到执行计划走了BitmapAnd,运行时间为123ms,效率提高了9倍。

来源:GBASE南大通用

相关推荐