【发布时间】:2021-05-12 17:05:13
【问题描述】:
我正在创建一个简单的基于表单的工具来使用字符串连接公式生成重复查询,并且想知道以下低效率对查询性能的影响有多大:
A) 等于与 IN 一个 1 元素数组:
-
WHERE FieldName = 'foo'- 对比
-
WHERE FieldName IN ('foo')
(表单字段接受 1 个或多个值;始终将其放在数组中比区分大小写更容易)
B) 数组中有冗余/重复值:
-
WHERE FieldName IN ('lorem','ipsum','dolor','sit','amet')- 对比
-
WHERE FieldName IN ('sit','ipsum','sit','dolor','ipsum','lorem','amet','ipsum','dolor','ipsum')
(实际数组可能有 200 个唯一值中的 20 个)
在这两个示例中,生成 (1) 比生成 (2) 需要更多的前期工作。
我可以添加条件来生成(2)(1);我只是想弄清楚这是否值得。
数据源有数百万条记录,而且(显然)这只是更复杂查询的一小部分。
提前致谢。
【问题讨论】:
-
您使用的是哪种 DBMS 产品? “SQL”只是所有关系数据库都使用的一种查询语言,而不是特定数据库产品的名称。请为您正在使用的数据库产品添加tag。 Why should I tag my DBMS
-
我可以添加条件来生成 (2); - 你为什么想要 (2)?
-
A 1 & 2 可能相同,我也怀疑 B,唯一的区别可能是解析/编译时间可以忽略不计。您可以通过在任何 RDBMS 中运行查询并查看执行计划运算符来轻松调查哪个更好。
-
针对 1st 2 cmets 编辑的帖子:标记的 DBMS:SQL Server 和 Redshift 中都存在表(日期范围略有不同);更正了在每种情况下生成 (1) 比生成 (2) 的工作量更大的错字。
标签: sql sql-server amazon-redshift query-optimization