小编A P*_*mer的帖子

BETWEEN与DB2 SQL查询中的= =和<= - 性能

我有以下查询:

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.

请建议.

提前致谢.

db2 query-optimization

8
推荐指数
2
解决办法
5万
查看次数

DECLARE GLOBAL TEMPORARY TABLE Vs在DB2中创建GLOBAL TEMPORARY TABLE

我正在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时遇到的问题很少:

  1. 使用时我找不到Replace关键字CREATE GLOBAL TEMPORARY TABLE.

  2. 考虑一个场景,我打开一个连接并执行一个存储过程,
    在该存储过程中创建全局临时表,并在该存储过程中调用另一个存储过程,它再次具有sameCreate Temp表语句..在这种情况下会发生什么.它会抛出任何错误,因为两个表naes是相同的并且在单个连接中?

  3. 声明有会话和创建没有?? 这与持久性有关吗?

  4. 在表现明智哪个更好?声明临时或创建临时?

  5. 建议一些最佳使用declare/create的场景!!

db2 performance stored-procedures temp-tables

8
推荐指数
1
解决办法
3万
查看次数

如何根据Oracle SQL中的日期进行过滤

我在我的函数中有如下查询.在那里我需要根据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'

但它投掷无效的月份...任何人都可以帮助纠正这个?

sql oracle

1
推荐指数
1
解决办法
4万
查看次数