检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
MySQL兼容性MySQL模式概述 MySQL兼容性MySQL模式主要介绍GaussDB数据库的MySQL兼容性MySQL模式(即sql_compatibility = 'MYSQL'、且设置参数b_format_version='5.7'、b_format_dev_version='s1'时)与MySQL
科学计数法计数。和MySQL的非JSON类型入参相同。但是在JSON类型入参时,由于JSON类型未完全与MySQL兼容,此场景下会产生差异。MySQL会完整显示数字(并且当数字长度超过82时,MySQL会给出错误的结果),GaussDB依然将超长数字解析为一个double精度的值
当前排序规则仅支持在其对应字符集与库级字符集一致时可以指定。 utf8mb4字符集下默认字符序为utf8mb4_general_ci,与MySQL 5.7保持一致,utf8mb4_0900_ai_ci为utf8mb4的非默认字符序。 GaussDB中utf8和utf8mb4为同一个字符集。 表1 排序规则列表 MySQL数据库
GaussDB支持查询列名包含字符串值节点(表示名称)和A_Star节点(表示出现“*”),如default(tt.t4.id)和default(tt.t4.*)。不合法的查询列名和A_Star节点,GaussDB和MySQL报错信息有差异。 GaussDB创建字段默认值,没有检
当入参period或结果小于0时,GaussDB参考MySQL 8.0.x版本的表现,报错处理。MySQL 5.7会发生整数回绕,导致计算结果异常。 PERIOD_DIFF() 支持,存在差异 当入参或结果小于0时,GaussDB参考MySQL 8.0.x版本的表现,报错处理。MySQL 5.7会发生整数回绕,导致计算结果异常。
作为函数/存储过程出入参、返回值时,MySQL支持功能、GaussDB语法不报错功能不支持。 GaussDB数据库和MySQL数据库整数类型具体差异请参见表1。 表1 整数类型 MySQL数据库 GaussDB数据库 差异 BOOL 支持,存在差异 MySQL:BOOL/BOOLEAN类型实际映射为TINYINT类型。
并行导入或插入自动增长列触发自增时,每个并行线程预留的缓存值也只在其线程中使用,未完全使用完毕的话,也会出现表中自动增长列的值不连续的情况。并行插入产生的自增值结果无法保证与MySQL完全一致。 SERIAL数据类型为原有的自增列,与AUTO_INCREMENT自增列有差异。MySQL的SER
执行计划如图1所示。 图1 增加JOIN列非空条件(一) 优化分析 分析执行计划图1可知,在顺序扫描阶段耗时较多。 多表JOIN中,由于表PS.SDR_WEB_BSCRNC_1DAY的JOIN列“BSCRNC_ID”存在大量空值,JOIN性能差。 建议在语句中手动添加JOIN列的非空判断,修改后的语句如下所示。
columnIndex) 按列标获取int型数据。 - int getInt(String columnLabel) 按列名获取int型数据。 - String getString(int columnIndex) 按列标获取String型数据。 字段类型为整型且带有ZEROFILL属性时,Gaus
SQL查询和子查询 GaussDB数据库兼容除分层查询以外的SQL查询和子查询。 表1 SQL查询和子查询 序号 Oracle数据库 GaussDB数据库 差异 1 创建简单查询 支持 - 2 分层查询 支持,有差异 GaussDB仅支持Oracle中的CONNECT_BY_FILTERING
SQL查询和子查询 GaussDB数据库兼容除分层查询以外的SQL查询和子查询。 表1 SQL查询和子查询 序号 Oracle数据库 GaussDB数据库 差异 1 创建简单查询 支持 - 2 分层查询 不支持 - 3 UNION [ALL],INTERSECT,减运算符 支持 -
s2'时,GaussDB中“\b”可以与“\\b”匹配,MySQL会匹配失败。 模式字符串pat非法入参,只存在右单括号“)”时,GaussDB会报错,MySQL 5.7会报错,MySQL 8.0不会报错。 在de|abc匹配序列de或abc的匹配规则,当|左右存在空值时,GaussDB不会报错,MySQL
系统函数兼容性概述 GaussDB数据库兼容绝大多数MySQL的系统函数,但存在部分差异。 除特别说明外,MySQL兼容性MySQL模式中的函数行为默认为GaussDB原生行为。 GaussDB MySQL兼容性的绝大部分系统函数目前均存在返回值与MySQL精度不一致(结果后面0的位数)的问题,
案例:增加JOIN列非空条件 1 SELECT * FROM join_a a JOIN join_b b ON a.b = b.b; 执行计划如下: 1 2 3 4 5 6 7 8 9 10
案例:增加JOIN列非空条件 1 SELECT * FROM join_a a JOIN join_b b ON a.b = b.b; 执行计划如下: 1 2 3 4 5 6 7 8 9 10
比较。 一个参数是datetime/timestamp类型,另一个参数是常量,将常量转换为时间戳类型然后比较。 如果其中一个参数是decimal类型,比较时使用的数据类型取决于另外一个参数。另外一个是decimal或者integer类型时,按照decimal类型;另外一个是其他类型,按照real类型比较。
GaussDB数据库支持指定数据库、模式、表或列的字符集,支持的范围如下。 表1 字符集列表 MySQL数据库 GaussDB数据库 utf8mb4 支持 gbk 支持 gb18030 支持 目前GaussDB对不属于当前字符集的非法字符未执行严格的编码逻辑校验,可能导致此类非法字符成功输入。而MySQL会校验报错。
案例:增加JOIN列非空条件 1 SELECT * FROM join_a a JOIN join_b b ON a.b = b.b; 执行计划如下: 1 2 3 4 5 6 7 8 9 10
MySQL兼容性B模式概述 MySQL兼容性B模式主要介绍GaussDB数据库的MySQL兼容性B模式(即sql_compatibility='B'、且设置参数b_format_version='5.7'、b_format_dev_version='s1'时)与MySQL 5.7数据库的兼容性对比信息。仅介绍503
data:包含实际的域名称。 使用一个SQLDA检索一个结果集。 通过一个SQLDA检索一个查询结果集的一般步骤: 声明一个sqlda_t结构来接收结果集。 执行FETCH/EXECUTE/DESCRIBE命令来处理一个已声明SQLDA的查询。 通过查看sqlda_t结构的成员sqln来检查结果集中记录的数量。