假设我在数据库中有一个包含 1,000,000
条记录的表格。
如果我执行:
SELECT * FROM [Table] LIMIT 1000
如果我有一个包含 1000
条记录的表,只执行以下查询语句,这个查询需要花费相同的时间吗?
SELECT * FROM [Table]
我并不是想知道第一种查询需要花费多长时间,我只是想知道第一种查询是否比第二种查询执行时间要长得多。
我说过有 1,000,000
条记录的情况,但实际可能是 20,000,000
。那只是一个例子。
编辑:
当然,如果使用 LIMIT 并且不在同一张表中使用它,使用 LIMIT 构建的查询应该更快,但这不是我的问题...
为了让问题更通用:
Table1
:有 X
条记录
Table2
:有 Y
条记录
(X << Y)
我想比较的是:
SELECT * FROM Table1
和
SELECT * FROM Table2 LIMIT X
编辑2:
这是我提出这个问题的原因:
我有一个数据库,其中包含5个表,它们之间存在关系。其中一个表(我可以100%确定)将包含约 5,000,000
条记录。我正在使用 SQL Server CE 3.5、Entity Framework 作为 ORM 和 LINQ to SQL 进行查询。
我需要执行基本上三种非简单的查询,我正在考虑向用户显示记录限制(就像许多网站一样)。如果用户想要查看更多记录,则选项是更加限制搜索。
所以,这个问题出现了,因为我在考虑做到这一点(每次查询限制为 X
条记录)或者仅存储 X
条结果(最近的那些),这将需要在数据库中进行一些删除,但我只是在思考...
因此,该表可能包含 5,000,000
条或更多记录,我不想向用户显示 1000
条记录,甚至在这种情况下,查询仍然与返回 5,000,000
行时一样慢。
LIMIT
被PostgreSQL支持,而TOP
只有TSQL/SQL Server支持。FETCH FIRST x ROWS ONLY
现在是ANSI标准,但据我所知,只有DB2实现了。 - OMG Ponies