哪一个更有效

时间:2012-03-05 06:48:07

标签: sql sql-server-2008 tsql


我有一个包含大量数据的表,并且想要检查是否存在特定行。如果该行存在,则增加inquiry_count列的值。 我们有两种不同的做法,请告诉我哪一个更好。

第一: 我们可以选择该行并使用“存在”功能进行检查,如果该行存在,则执行更新命令以增加inquiry_count列。

第二的 我们只能执行更新命令。如果受影响的行数大于0,则该行存在。

3 个答案:

答案 0 :(得分:3)

编写两个查询,使用SQL事件探查器检查哪一个在您的方案中哪个更好。

答案 1 :(得分:1)

如果您担心表演问题,似乎与该帖有关: Solutions for INSERT OR UPDATE on SQL Server

答案 2 :(得分:0)

我认为这两个查询都不合适。

  1. EXISTS仅用于子查询,它是非常高性能的。 - 但不用于独立检查。
  2. UPDATE实际上只应用于更新数据,而不是用于存在检查。
  3. 我建议使用TOP查询进行查询并使用适当的索引。

    e.g。

    SELECT TOP 1 {ID} FROM {TABLE} WHERE {YOUR CHECK HERE}