0

友人のために 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 にはインデックスの概念がないため、これは不可能です。

この問題を解決するにはどうすればよいですか?

よろしくお願いいたします。

4

2 に答える 2

2

「and date >= 12/1/2012 and event date <= 12/31/2012」という行は、実行時にどのようにコーディングされますか? 「DATE」という名前の列は本当にありますか? 「イベント日」にアンダースコアがありませんか?

12/1/2012 は、日付ではなく、整数ゼロに評価されます。使用する:

日付「2012-12-01」
日付「2012-12-31」

または to_date('12/1/2012', 'mm/dd/yyyy') Oracle のように

于 2013-02-17T23:19:45.643 に答える