Sybase IQ使用过程中注意事项详解程序员
1,字母大小写比对不敏感,也就是在值比对判断时大小写字母都一样;
2,等值,或 判断,系统默认对等式两边比对值去右边空格再进行比较;
3,GROUP BY 可以根据SELECT字段或表达式的别名来 汇总,在编写时也尽量避免SELECT 语句的别名与FROM表中的字段有重复,不然会出现莫名其妙的错误;
4,FROM后的子查询 要定义别名才可使用;
5,存储过程要返回IQ系统错误信息 SQLCODE || ERRORMSG(*) :(两者都为EXCEPTION后第一条SQL语句才有效果);
6,IQ中若采用 FULL JOIN 连接则不能使用 WHERE 条件,否则FULL JOIN将失效,要筛选条件则用子查询先过滤记录后再FULL JOIN;
7,建表时,字段默认为非空;
8,UPDATE语句,如果与目标表关联的表有多条,则不会报错,而是随机取一条更新(第一条);
9,RANK() OVER(PARTITION BY .. ORDER BY ..) 分组分析函数,相同的ORDER BY值,返回顺序值一样,且PARTITION BY 只支持一个字段或一个字段组(需多个字段分组的则要用 || 拼为一个字段(待确认,该问题以前碰过一次,再次验证却不存在这问题))
10,返回可读的 全局唯一字符:UUIDTOSTR(NEWID())
11,存储过程隐式游标语法:
FOR A AS B CURSOR FOR SELECT FROM
DO
. 过程语句
END FOR;
需要注意的时,这边的A 和 B 在 过程语句中都不能引用,所以为避免过程语句其他字段名与FOR SELECT 语句的字段名称重复,FOR SELECT 语句的字段最好都定义别名区分
12,根据SELECT 语句建立[临时]表的方法(ORACLE的CREATE TABLE)为 SELECT ..[*] INTO [#]table_name FROM ..; 其中如果在table_name加前缀#,则为会话级临时表,否则为实体表;
13,因Sybase为列存储模式,在执行上INSERT语句会比UPDATE语句慢,尤其表数据越多INSERT效率就越慢;所以在ETL时建议多用UPDATE而不是INSERT
14,虽说Sybase为列存储模式,每个字段上都有默认索引,但对于经常的两表的关联键还是要建立索引否则会经常报QUERY_TEMP_SPACE_LIMIT不足的错误;
15,存储过程中也可以显示的执行DDL语句,这点与Oracle不同;
16,空字符串 在Sybase中也是个字符而不是null值,这点要注意;
17,调整SESSION的临时空间SET TEMPORARY OPTION QUERY_TEMP_SPACE_LIMIT = 150000 15000为大小,如写0则没限制大小
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/2514.html
服务器部署程序员系统优化网站设置运维相关文章
- 中高级程序员可能都不会使用spring-boot-starter-jdbc访问MySQL
- Linux 查看内存使用情况详解程序员
- iftop 使用详解程序员
- SpringBoot 中使用HikariPool 报错Possibly consider using a shorter maxLifetime value.详解程序员
- Shell脚本编程:使用shell打印九九乘法表详解程序员
- linux 进程间通信,使用socketpair,pipe详解程序员
- linux下使用adduser与useradd命令批量添加用户详解程序员
- Shell编程之数组使用详解程序员
- CentOS 7.2 下nginx SSL证书部署的方法(使用crt以及key 配置)详解程序员
- SCons的使用详解程序员
- linux下gcc编译多个源文件、gdb的使用方法详解程序员
- 使用VNC远程连接Windows Azure Linux虚拟机详解程序员
- 使用 RestTemplate 调用 restful 服务详解程序员
- Linux中使用sed命令替换字符串小结详解程序员
- maven中使用dom4j解析、生成XML的简易方法详解程序员
- [Linux] PHP程序员玩转Linux系列-怎么安装使用详解编程语言
- 程者运用Linux:非程序员如何使用(linux非编)