摘要:在关系型数据库管理系统(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南大通用