SQL UPDATE查询性能

nin 发布于 4 天前 sql 最后更新 4 天前 1 浏览

我正在使用Azure SQL数据库。 如果我在Building表中有150K条记录。 Residental列的类型为bit。 一半的记录具有Residental = 1。 在我的情况下,这两个查询中的哪一个在性能方面更好?

UPDATE p.Building
SET Residental = 1
WHERE References > 100
UPDATE p.Building
SET Residental = 1
WHERE References > 100
AND Residental <> 1
更新: 这是分析器结果。首先是更好的我猜?如果所有记录都有Residental = 10呢?这会影响分析的结果?我试图执行测试但分析器结果几乎相同。 enter image description here
已邀请:

rsaepe

赞同来自:

编辑 既然您已经发布了解释输出,那么有以下几点:

  • 您的DBMS正在使用的任何内容看起来都没有索引。如果我是你,我会在“参考”字段和“住宅”字段中添加索引并重新运行您的分析。
  • 对于第二个查询,您可以在两个字段上添加多列索引,就性能而言,这可能是您最好的选择。
  • 您的“群集索引扫描”应该更改为告诉您它正在使用您的新索引。
这里有一个关于索引的非常好的解释,但你可以欺骗并添加推荐的那些,你应该很好。 How does database indexing work? 原始答案
Which of these two queries is better in terms of performance in my case?
排序答案,没有办法告诉您提供的信息。您需要查看RDBMS将用于执行查询的计划。你没有说哪个数据库,所以这里是MySQL文档: http://dev.mysql.com/doc/refman/5.7/en/explain.html 它主要依赖于索引和统计信息以及数据库供应商,但您可以通过解释查询来生成所有信息。发布两个查询的解释结果,你会得到答案。 截至目前,答案取决于它