检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
RESULT; result -------- t (1 row) 除了上述的操作符,还为tsvector类型和tsquery类型的数据定义了普通的B-tree比较操作符(=,<等)。 父主题: 文本检索函数和操作符
JSON/JSONB操作符 表1 json和jsonb通用操作符 操作符 左操作数类型 右操作数类型 返回类型 描述 示例 -> Array-json(b) int json(b) 获得array-json元素。下标不存在返回空。 SELECT '[{"a":"foo"}, {"b":"bar"}
案例:建立合适的索引 创建合适的索引可以加速对表中数据行的检索。索引占用磁盘空间,并且降低添加、删除和更新行的速度。如果需要非常频繁地更新数据或磁盘空间有限,则需要限制索引的数量。在表较大时再建立索引,表中的数据越多,索引的优越性越明显。建议仅在匹配如下某条原则时创建索引: 需要经常执行查询的字段。
DECLARE … BEGIN … IF v_num IS NULL THEN NULL; -- 不需要处理任何数据。 END IF; END; / 父主题: GaussDB(DWS)存储过程控制语句
UPDATE&DELETE操作规范 建议3.5 避免并发UPDATE/DELETE行存表的同一行 违反规范的影响: 并发UPDATE/DELETE行存表可能导致行锁阻塞和分布式死锁风险,导致业务报错和性能下降。 方案建议: 按主键或分布列进行分组UPDATE/DELETE,组间并行,组内串行。
逻辑上的一张表根据某种策略分成多个物理块进行存储,这张逻辑上的表称之为分区表,每个物理块则称为一个分区。一般对数据和查询都有明显区间段特征的表使用分区策略可通过较小不必要的数据扫描,从而提升查询性能 在查询时,可通过分区剪枝技术尽可能减少底层数据扫描,即缩小表的扫描范围。分区剪枝是指对于分区表或分区索引来说,优化器可
这些参数可能会导致JDBC客户端的行为与gsql客户端的行为不一致,例如,Date数据显示方式、浮点数精度表示、timezone显示。 如果实际期望和这些配置不符,建议在java连接设置代码中显式设定这些参数。 【建议】通过JDBC连接数据库时,应该保证下面两个时区设置一致: JDBC客户端所在主机的时区。
案例:增加JOIN列非空条件 若Join列上的NULL值较多,可以加上is not null过滤条件,以实现数据的提前过滤,提高Join效率。 优化前 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
动态调用存储过程 动态调用存储过程必须使用匿名的语句块将存储过程或语句块包在里面,使用EXECUTE IMMEDIATE…USING语句后面带IN、OUT来输入、输出参数。 语法 语法请参见图1。 图1 call_procedure::= using_clause子句的语法参见图2。
SCHEMA对象设计规范 建议2.7 不在其他USER的私有SCHEMA下创建对象 私有SCHEMA是指创建USER时自带的同名SCHEMA,该SCHEMA为该USER私有。 违反规则的影响: 在其他用户私有SCHEMA下创建对象,对象权限不受创建者控制,OWNER也非创建者。 方案建议:
VIEW对象设计规范 建议2.16 视图的嵌套需避免超过三层 违反规范的影响: 视图嵌套过深导致执行计划不稳定、耗时不稳定。 视图依赖的对象重建风险高,锁冲突发生概率增大。 方案建议: 创建视图直接基于物理表查询,不建议嵌套视图。 父主题: GaussDB(DWS)对象设计规范
子查询调优 子查询背景介绍 应用程序通过SQL语句来操作数据库时会使用大量的子查询,这种写法比直接对两个表做连接操作在结构上和思路上更清晰,尤其是在一些比较复杂的查询语句中,子查询有更完整、更独立的语义,会使SQL对业务逻辑的表达更清晰更容易理解,因此得到了广泛的应用。 Gaus
202008,这种表达式一侧不是单纯的分区键、而是包含分区键的表达式的Filter条件是不能用来剪枝的,因而导致查询语句扫描了几乎整个分区表的数据。 跟原始SQL语句对比,可以确定表达式 '(year_mth + 1) > 202008' 是从表达式 'b1.year_mth + 1
RESULT; result -------- t (1 row) 除了上述的操作符,还为tsvector类型和tsquery类型的数据定义了普通的B-tree比较操作符(=,<等)。 父主题: 文本检索函数和操作符
Roaring Bitmap操作符 GaussDB(DWS)自8.1.3集群版本开始,支持高效的位图处理操作符,可用于用户画像,精准营销等场景,极大的提高了查询性能。 = 描述:比较两个roaringbitmap是否相等。 返回值类型:bool 示例: 1 2 3 4 5
这些记录被认为是相同的。 【关注】通过常量来过滤数据时,会根据常量的数据类型和匹配列的数据类型来查找用于这两种数据类型计算的函数,如果找不到对应的函数,则会相应的进行隐式数据类型转化,然后再根据转化后的数据类型查找用于转化后的数据类型计算的函数。 SELECT * FROM test
作业中多个SQL有同样的子查询,并且子查询数据量较大。 Plan cost计算不准,导致子查询hash bucket太小,比如实际数据1000W行,hash bucket只有1000。 函数(如substr,to_number)导致大数据量子查询选择度计算不准。 多DN环境下对大表做broadcast的子查询。
store_sales_row | [13.352,13.352] | 3360 | [34KB, 34KB] | 上述例子中,全表扫描返回3360条数据,过滤掉大量数据,在ss_sold_date_sk列上建立索引后,使用IndexScan扫描效率显著提高,从3.6秒提升到13毫秒。 示例2:如果
择其他方法。 enable_broadcast=on 控制查询优化器对于broadcast广播模式数据传输的使用。此方式网络传输数据量较大,因此当网络传输节点(Stream)实际数据量较大而估算不准时,可以将该参数设置为off,看性能是否有提升。 rewrite_rule 控制优化器是否启用特定组合的重写规则。
案例:调整局部聚簇键 局部聚簇 (Partial Cluster Key,简称PCK),列存储下一种通过min/max稀疏索引实现基表快速扫描的索引技术。Partial Cluster Key可以指定多列,但是一般不建议超过2列。PCK适用于列存大表点查询加速。 优化前 创建一个