【问题标题】:SQL Where Condition having 15+ different strings for one columnSQL Where Condition 一列有 15 个以上不同的字符串
【发布时间】:2020-12-01 03:55:00
【问题描述】:

我想为 1 列实现多个特定参数,例如:

select * from table1 
where column1 = a or column1 = b or column1  = c ...

能否以更好的方式完成(使用中的 SQL 语句超过 10 行 加上 OR 语句,它会再增加 10 行 Oo,它会使代码 慢得多!

【问题讨论】:

  • 为了便于阅读,您可以使用运算符 IN。性能虽然不会更好。
  • column1 IN (a ,b ,c, ...) 应该适用于许多 SQL 数据库。
  • 如果您担心性能问题,那么在 column1 上添加索引可能会有所帮助,但使用 'IN' 绝对是可行的方法。
  • 是 a、b、c 等文字/值还是其他列?
  • 我听说过最快的 SQL 处理方式,它将包括 UNION ALL,尽管在 cmets 中已经提到过 IN 的可读性。

标签: sql performance select conditional-statements netezza


【解决方案1】:

你可以使用in:

select t.*
from t
where column in ( . . . );

in 列表非常等效于一堆or 条件。有一些细微差别。例如,in 列表中的所有值都将转换为相同的类型。如果一个是数字,其余是字符串,那么所有都将转换为字符串——可能会产生错误。

为了提高性能,您需要在t(column) 上建立索引。

【讨论】:

  • 这有助于最大程度地提高代码的可见性,遗憾的是它无助于提高性能速度,因为最好是通过选择这些特定参数来 UNION ALL,尽管应该额外写入多少行,那得检查一下。
猜你喜欢
  • 1970-01-01
  • 2012-03-30
  • 2011-05-21
  • 1970-01-01
  • 1970-01-01
  • 2014-10-14
  • 2014-09-26
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多