我有一个问题是SQL查询的速度有多快
SELECT * FROM Persons WHERE City='Sandnes'
来自查询
SELECT * FROM Persons
是?
从网络上的各种来源来看,人们一致认为,通过更加过滤的查询可以提升性能,但它们似乎永远不具体。
我意识到答案取决于数据库的大小,所以我们假设有三个数据库,一个只有1000条记录,第二个有1M记录,第三个有10M记录。假设记录只有几个字节大,所以这些数据都适合服务器RAM。
我可能会看到速度有多大差异,比如百分比?即使是球场猜测也是有帮助的。
我使用的是Microsoft SQL Server,但这无关紧要。
答案 0 :(得分:2)
我最喜欢的答案:“一切都取决于”! 考虑一下:你有一个关于city的索引,而查询优化器使用它,所以你最终会从索引到表进行一系列的查找,因为你正在请求所有列(*)。如果索引不是非常有选择性(例如,大多数记录都在特定的“城市”中),那么这将比索引是选择性的(例如,在所选城市中只有一小部分)慢得多,并且可能比完整的表慢扫描。因此,如果您的统计信息因任何原因而不准确,那么数据库可能需要更长的时间来返回过滤的记录集而不是整个表。 回答问题的唯一方法是使用您的数据,软件和硬件进行基准测试。