在Sybase中批量选择
问题描述:
我有几千个col1,col2不同的值。 Col1 - >一些主键和Col 2 - >日期。在Sybase中批量选择
对于第三栏3,我必须查询一个大表,在大多数情况下,这只能给我几百个结果。
现在我的担心是如何写我的地方的条件或使用工会,以便我查询我的数据库的次数减少。由于这个,我的程序很慢。
目前我在使用DBI在我的perl程序中做类似下面的事情。
select COL3 from Table where (COL1='v1' and COL2='Sep 25 2007 12:00AM') or (COL1='b3' and COL2='Sep 28 2007 12:00AM')
or (COL1='c1' and COL2='Sep 11 2007 12:00AM') and COL3='ABCD'
union
select COL3 from Table where (COL1='v2' and COL2='Sep 28 2007 12:00AM') or (COL1='b2' and COL2='Oct 1 2007 12:00AM')
or (COL1='c2' and COL2='Sep 28 2007 12:00AM') and COL3='ABCD'
union
select COL3 from Table where (COL1='v3' and COL2='Oct 1 2007 12:00AM') or (COL1='b1' and COL2='Sep 28 2007 12:00AM')
or (COL1='c3' and COL2='Sep 24 2007 12:00AM') and COL3='ABCD'
答
现在我把count = 25的东西分组,删除union,我的程序有了很大的提升。谢谢,但如果有更好的选择,我很感兴趣。
答
这样做的一种方法是创建一个临时表来存放您拥有的所有col1和col2值。将col1和2的值插入临时表,然后在临时表和表之间做一个查询连接(我只是为每个表的第一部分做一个查询连接,或者因为COL3 ='ABCD'的位会类似
零件该代码将是
create table #t
(
COL1 char(2) not null,
COL2 datetime not null
)
做插入
然后
select col3
from Table
inner join #t t on t.COL1 = Table.COL1 and t.COL2 = Table.COL2
我认为工会是我做的愚蠢的事情,它让我的工作更加缓慢。不是一个好方法。 – awake416 2010-09-17 11:49:06