【发布时间】:2014-10-13 15:04:47
【问题描述】:
我有一个类似于这样的选择语句
SELECT
CASE WHEN <SOME-CONDN_1> THEN 'value1' ELSE '' ||
CASE WHEN <SOME-CONDN_2> THEN 'value2' ELSE '' ||
CASE WHEN <SOME-CONDN_3> THEN 'value3' ELSE '' AS value_column,
CASE WHEN <SOME-CONDN_1> THEN 'name1' ELSE '' ||
CASE WHEN <SOME-CONDN_2> THEN 'name2' ELSE '' ||
CASE WHEN <SOME-CONDN_3> THEN 'name3' ELSE '' AS name_column
FROM data_table
--<REST OF THE QUERY>
条件语句类似于data_table.data_column ILIKE value1 等等。
由于我两次执行相同的条件语句(并且它涉及使用ILIKE 进行一些字符串匹配),我想知道是否可以将它们加入俱乐部并提高效率。
使用 SQL 语句也可以吗?
【问题讨论】:
-
就语法而言,这往往会很快成为特定于供应商的 - 你在问什么供应商?
-
我正在使用 Redshift 数据库。它主要使用 PostGreSQL。
-
Redshift 是一个分析型数据库,能够针对数十亿条记录优化查询。存储文本数据和进行字符串操作并不是最佳实践。请考虑使用一些预处理来解析您的数据并将其放入正确的列,而不是上述复杂且缓慢的查询。
标签: sql database postgresql amazon-redshift