2016-09-26 74 views
0

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

UPDATE p.Building 
SET Residental = 1 
WHERE References > 100 

UPDATE p.Building 
SET Residental = 1 
WHERE References > 100 
AND Residental <> 1 

UPDATE:

这是探查的结果。首先是更好的我猜?如果所有记录都有Residental = 10?这会影响分析的结果?我试图执行测试但分析器结果几乎相同。

enter image description here

+1

我删除了不兼容的数据库标签。请用您实际使用的数据库标记问题。 –

+0

我想象第二个是最快的。将有更少的更新,如果Residental索引,将有更少的读取 –

+0

这是会经常发生还是只发生一次? – n8wrl

回答

2

编辑

现在你已经发布你的解释输出,两件事情:

  • 貌似你没有任何东西的指标,你的DBMS正在使用。如果我是你,我会在“参考”字段和“住宅”字段中添加一个索引,然后重新运行你的分析。
  • 对于第二个查询,您可以在两个字段上添加多列索引,这可能是您表现最好的选择。
  • 你的“Clustered Index Scan”应该改变,告诉你它正在使用你的新索引。

下面是关于索引的一个很好的解释,但你可以只是作弊并添加推荐的,你应该很好。

How does database indexing work?

原来的答案

这两个疑问的是,在我的情况下性能方面更好?

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

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

这主要取决于指标,统计和数据库供应商,但你可以通过生成解释查询的所有信息。发布两个查询的解释结果,你会得到答案。

截至目前的答案是这取决于

+0

谢谢你的详细解答! – AsValeO