Sybase DB - 如何将SELECT查询结果存储在变量中?

时间:2015-08-06 10:11:37

标签: sql sybase

我需要将SELECT查询的结果存储在变量中以减少计算时间。结果的格式为' X'' Y'' Z',...

WHERE
  PEL.kuerzel in (SELECT KL.kuerzel from ictq.KLE KL WHERE FachgruppeKuerzel=526)

现在,对于每个~2000个条目,SELECT查询被执行3次。如果我能够在本地存储结果,我只需要运行一次。

我正在使用Sybase 11数据库。我怎样才能实现这个或类似的东西?

从150行查询中取出片段的子查询:

SELECT list(PEL.kuerzel) from ictq.PEpisode PE
INNER JOIN ictq.PEpisodeLeistung PEL ON(PE.IDPATIENTEPISODE = PEL.IDPATIENTEPISODE)
WHERE 
  PE.IDPATIENTKLINIK = P.IDPATIENTKLINIK and 
  PEL.Datum between dateadd(month, -12, @startdatum) and @startdatum and
  PEL.kuerzel in (SELECT kl.kuerzel from ictq.KLE kl where FachgruppeKuerzel=526)

我无法控制结构,无法添加任何内容。查询本身就是传统工作,我很高兴它现在可以正常工作。然而,缓慢的计算需要进行大修。

1 个答案:

答案 0 :(得分:0)

使用exists而非in或将in子查询移至from子句通常更有效:

FROM PEL JOIN
     (SELECT DISTINCT KL.kuerzel 
      FROM ictq.KLE KL
      WHERE FachgruppeKuerzel = 526
     ) KL
     ON PEL.kuerzel =  KL.kuerzel;

要获得此查询的效果,您需要ictq.KLE(FachgruppeKuerzel, kuerzel)PEL(kuerzel)上的索引。