繁体   English   中英

SQL查询效率检查

[英]Efficiency check in sql query

我在两种执行任务的方法之间挣扎。

我有一组条件,当它们全部为真时-我需要在该记录的“ x”列属性中设置“ true”。

什么是更有效和推荐的,为什么?

  1. 对于表中的所有记录,将此列设置为“ false”,然后在某些情况下运行另一个查询以将“ true”设置为“ true”。
  2. 如果所有条件均为“ true”,则设置为“ true”,然后在一个或多个条件失败的所有记录上运行另一查询以将“ false”设置为“ false”。

我不能认为需要更改“ x”列的某些默认值,因为查询也应在初始值插入该列后需要的时候偶尔运行一次。从我上次运行此查询开始。

也许还有另一个想法,比上面的2个更有效?

我也想了解如何高效地计算查询,这类似于编程中的高效计算方式。

可能最有效的方法是使用case语句,因为您只需要每行评估一次条件,并且也只需修改每行一次,例如

UPDATE tablename SET fieldname = (CASE WHEN conditions THEN 'true' ELSE 'false' END)

案例声明至少在Oracle和MS-SQL中可用。 不了解其他数据库供应商。

如果所有条件在数据结构上都相似,那么我认为这并不重要。

如果条件具有不同的数据查询结构(例如,“我的键不是tableB中的外键”和“ State ='California'”),则设置为true,然后逐个检查它们(作为SQL序列)语句)更好,因为您可以先检查简单的语句,而不必担心那些已经删除其标志的记录的复杂记录。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM