我正在尝试为我的一个朋友解决Netezza的问题。 我的朋友正试图在Netezza做一些非常简单的事情:
select *
from
test
where
ID1 = 12345
and date >= 12/1/2012 and event date <= 12/31/2012
and ID2 in
(x1, x2, ..., x150000)
此查询永远不会返回。
在Oracle中,我们可以尝试这样的事情:
/*******************************************************************/
/*To reduce the size of the table...*/
create table t_test as
select *
from
test
where
ID1 = 12345
and date >= 12/1/2012 and event date <= 12/31/2012;
/*To make the search on ID2 faster...*/
create index i_ID2 on t_test (ID2);
select *
from
t_test
where
ID2 in
(x1, x2, ..., x150000)
/*Alternative: People say "IN" may be very inefficient at times...*/
select *
from
t_test
where
ID2 = x1
or ID2 = x2
.
.
.
or ID2 = x150000
/*******************************************************************/
然而,这在Netezza中是不可能的,因为它没有任何索引概念。
如何解决这个问题?
谢谢和问候,
答案 0 :(得分:2)
运行它时,行和“和日期&gt; = 12/1/2012以及事件日期&lt; = 12/31/2012”的编码是怎样的?你真的有一个名为“DATE”的专栏吗? “活动日期”中缺少一个下划线?
12/1/2012评估为整数零,而不是日期。使用:
date '2012-12-01' date '2012-12-31'像Oracle一样
或to_date('12 / 1/2012','mm / dd / yyyy')
答案 1 :(得分:0)
试试这种方式
select *
from
test
where
ID1 = 12345
and eventdate BETWEEN DATE('12/1/2012') DATE('12/31/2012')
and ID2 in
(x1, x2, ..., x150000)