举个例子:
select
pre, sze, fdm_pre, val
from
form_data_stage
where
fdm_pre in (1,2,3,4)
order by
pre;这将返回列出的任何fdm_pre值的所有列pre、sze、fdm_pre和val的值,即(1,2,3,4)。但是,当fdm_pre为1时,我只关心pre和size的值。
我可以写一个查询,比如
select
case when fdm_pre = 1 then pre else null end as pre,
case when fdm_pre = 1 then sze else null end as sze,
fdm_pre,
val
from
form_data_stage
where
fdm_pre in (1,2,3,4)
order by
pre;但是,有没有一些标准的方法来处理这种情况?返回所有列通常更有效吗,即使它们不被使用?或者,像第二个查询那样做一些条件检查会更好吗?pre和sze列是整数值。
发布于 2021-10-15 19:26:49
当不使用所有列时,返回所有列的效率很低,特别是当未使用的列很大时(BLOB、CLOB、TEXT、ARRAY等)。
在您的特定示例中,“未返回”列是较小的列(以字节为单位),因此如果生成空值也没什么关系。
发布于 2021-10-15 21:14:23
您可以使用execute string而不是这种脚本。通过这种方式,您需要的列应该放在字符串中,使用if语句,您可以决定显示哪一列,而不需要显示哪一列。如果你需要的话,我可以给你做一个样品。
发布于 2021-10-15 19:29:25
我认为保持查询的简洁性和易读性很重要。我建议您返回所有相关的列(这可能会很有用),并在应用程序逻辑方面处理列使用的这两个选项。
https://stackoverflow.com/questions/69589596
复制相似问题