一个简短的问题。假设我有以下两个查询:
SELECT TOP 2 * FROM Persons;
和
SELECT * FROM Persons limit 2;
我想知道上述2个查询的执行区别?
基本上,我想知道何时应该使用limit
关键字以及何时使用top
关键字。
此外,数据库如何根据上述2个查询返回结果。
答案 0 :(得分:55)
如果您使用的是TOP
,请使用MySQL
或Postgres
使用Limit
!
AFAIK目前没有产品支持这两种产品。 Here's one当前实施列表和here's another(涵盖更多产品,但不太详细)
答案 1 :(得分:28)
正如我对马丁史密斯上述答案的评论所述,有些产品同时支持LIMIT
和TOP
(正如您所见here)。不同之处在于TOP
仅选择前n个记录,但LIMIT
允许定义偏移量以检索特定范围的记录:
SELECT * FROM ... LIMIT 5 OFFSET 10
在跳过10条记录之后,此语句选择前5条记录,TOP
不可能这样做。
我发布的示例仅针对上面链接的DBS进行了检查。由于时间不够,我没有检查SQL标准。
答案 2 :(得分:13)
TOP& LIMIT都适用于亚马逊Redshift
答案 3 :(得分:11)
limit
适用于MySQL和PostgreSQL,top
适用于SQL Server,rownum
适用于Oracle。
答案 4 :(得分:4)
没有区别。 TOP
和LIMIT
关键字的功能相同,并且会返回相同的内容。
答案 5 :(得分:-6)
一个大错误,LIMIT很慢,因为select是返回full然后数据库服务器只返回有限的数据。当它用于TOP时。