Массовое выделение в Sybase - PullRequest
       48

Массовое выделение в Sybase

0 голосов
/ 17 сентября 2010

У меня есть несколько тысяч значений col1, col2. Col1 -> некоторый первичный ключ и Col 2 -> дата.

Для третьего столбца 3 мне нужно запросить большую таблицу, которая в большинстве случаев дает мне лишь несколько сотен результатов.

Теперь меня интересует, как можно написать свое условие where или использовать союзы, чтобы уменьшить количество запросов к моей базе данных. моя программа работает медленно из-за этого.

В настоящее время я делаю что-то вроде ниже в моей программе на Perl, используя DBI.

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'

Ответы [ 2 ]

1 голос
/ 21 сентября 2010

Один из способов сделать это - создать временную таблицу для хранения всех имеющихся у вас значений 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
0 голосов
/ 19 сентября 2010

На данный момент я сгруппировал вещи с числом = 25, удаляя объединение, и я получил хорошее улучшение в моей программе.Спасибо, но если есть лучший вариант, мне интересно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...