我有以下查询:
SELECT ID, ADDRESS
FROM EMPLOYEE A
WHERE ID=12345
AND CURRENT DATE BETWEEN A.EFF_DT AND A.EXP_DT
SELECT ID, ADDRESS
FROM EMPLOYEE A
WHERE ID=12345
AND CURRENT DATE >= A.EFF_DT AND CURRENT DATE <= A.EXP_DT
Run Code Online (Sandbox Code Playgroud)
在这两个查询中,查询产生更好的性能.
这里我使用运算符> =和<=而不是BETWEEN.
请建议.
提前致谢.
我正在GLOBAL TEMPORARY TABLEDB2中创建一个.当我冲浪时,我有两种方式来创建1.声明2.创建.
1. DECLARE GLOBAL TEMPORARY TABLE SESSION.TEMP_EMP
(EMPNO CHAR(6) NOT NULL,
SALARY DECIMAL(9, 2),
BONUS DECIMAL(9, 2),
COMM DECIMAL(9, 2)) WITH REPLACE ON COMMIT PRESERVE ROWS ;
2. CREATE GLOBAL TEMPORARY TABLE TMPDEPT
(TMPDEPTNO CHAR(3) NOT NULL,
TMPDEPTNAME VARCHAR(36) NOT NULL,
TMPMGRNO CHAR(6),
TMPLOCATION CHAR(16) ) ON COMMIT PRESERVE ROWS ;
Run Code Online (Sandbox Code Playgroud)
从IBM站点我得到了一个信息,创建是最好的,因为它是持久的,允许所有用户会话访问相同的表定义,而无需在启动时声明它和更多的优势.
链接:http://www.ibm.com/developerworks/data/library/techarticle/dm-0912globaltemptable/
我在使用create over declare时遇到的问题很少:
使用时我找不到Replace关键字CREATE GLOBAL TEMPORARY TABLE.
考虑一个场景,我打开一个连接并执行一个存储过程,
在该存储过程中创建全局临时表,并在该存储过程中调用另一个存储过程,它再次具有sameCreate Temp表语句..在这种情况下会发生什么.它会抛出任何错误,因为两个表naes是相同的并且在单个连接中?
声明有会话和创建没有?? 这与持久性有关吗?
在表现明智哪个更好?声明临时或创建临时?
建议一些最佳使用declare/create的场景!!
我在我的函数中有如下查询.在那里我需要根据a.submit_date进行过滤
SELECT mail_id , mail_async, mail_priority FROM glms_mail_sys_mail_store a
WHERE
--(TO_DATE(a.submit_date,'dd-MM-yyyy HH:mm') >= '14-06-2012 18:30')
--AND (TO_DATE(a.submit_date,'dd-MM-yyyy HH:mm') <= '15-06-2012 18:50')
(TO_DATE(TO_CHAR(a.submit_date,'dd-MM-yyyy HH:mm'),'dd-MM-yyyy HH:mm') >= '14-06-2012 18:30')
AND (TO_DATE(TO_CHAR(a.submit_date,'dd-MM-yyyy HH:mm'),'dd-MM-yyyy HH:mm') <= '15-06-2012 18:30')
Run Code Online (Sandbox Code Playgroud)
在我的数据库中,a.submit_date的值为'14 -06-2012 20:30'
但它投掷无效的月份...任何人都可以帮助纠正这个?