sql 查询中的效率检查

Efficiency check in sql query

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

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

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

  1. 为table中的所有记录将此列设置为"false",然后 运行 在某些条件下设置 "true" 的另一个查询。
  2. 如果所有条件都满足 "true",则设置 "true",然后 运行 另一个查询以在一个或多个条件失败的所有记录上设置 "false"。

我不能假设 "x" 列的某些默认值需要更改,因为查询应该 运行 也偶尔,当需要时,在初始值是插入到该列,并且某些条件可能与我上次 运行 此查询时有所不同。

或许还有另一种思路,比上面两种更高效?

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

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

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

Case 语句至少在 Oracle 和 MS-SQL 中可用。不知道其他数据库供应商。

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

如果条件有不同的数据查询结构(例如"my key isn't a foreign key in tableB"和"State = 'California'"),设置为true,然后一一检查(作为SQL的序列statements) 更好,因为你可以先检查简单的语句,而不用担心已经删除了标志的记录的复杂语句。