我正在使用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 = 1
或0
怎么办?这会影响分析的结果吗?我试图进行测试,但是探查器结果几乎相同。
答案 0 :(得分:2)
修改强>
现在您已经发布了解释输出,其中包括以下几点:
这里有一个关于索引的详细解释,但你可以欺骗并添加推荐的那些,你应该很好。
How does database indexing work?
原始答案
在我的案例中,这两个查询中的哪一个在性能方面更好?
对答案进行排序,没有办法告诉您提供的信息。您需要查看RDBMS将用于执行查询的计划。你没有说出哪个数据库,所以这里是MySQL文档:
http://dev.mysql.com/doc/refman/5.7/en/explain.html
它主要依赖于索引和统计信息以及数据库供应商,但您可以通过解释查询来生成所有信息。发布两个查询的解释结果,您就可以得到答案。
截至目前,答案是取决于