SQL UPDATE查询性能

时间:2016-09-26 14:21:55

标签: sql azure-sql-database

我正在使用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

1 个答案:

答案 0 :(得分:2)

修改

现在您已经发布了解释输出,其中包括以下几点:

  • 看起来您没有DBMS正在使用的任何索引。如果我是你,我会在&#34;参考文献&#34;上添加一个索引。领域&#34;住宅&#34;字段并重新运行您的分析。
  • 对于第二个查询,您可以在两个字段上添加多列索引,就性能而言,这可能是您最好的选择。
  • 您的&#34;聚集索引扫描&#34;应该改变告诉你它使用你的新索引。

这里有一个关于索引的详细解释,但你可以欺骗并添加推荐的那些,你应该很好。

How does database indexing work?

原始答案

  
    

在我的案例中,这两个查询中的哪一个在性能方面更好?

  

对答案进行排序,没有办法告诉您提供的信息。您需要查看RDBMS将用于执行查询的计划。你没有说出哪个数据库,所以这里是MySQL文档:

http://dev.mysql.com/doc/refman/5.7/en/explain.html

它主要依赖于索引和统计信息以及数据库供应商,但您可以通过解释查询来生成所有信息。发布两个查询的解释结果,您就可以得到答案。

截至目前,答案是取决于