我需要查询其中包含大量数据的Sybase数据库,并希望设置一个限制,以便数据库在10个结果后停止查询.
关键是性能,所以如果它搜索所有结果然后返回最后10个结果就没用了.
提前致谢
bri*_*gge 44
使用Sybase 12.5及更高版本,您可以在select语句中使用top谓词.这是一个非ANSI特性,MSSQL已经有很长一段时间了.
select top 10 * from people
Run Code Online (Sandbox Code Playgroud)
您不能在子查询,更新或删除中使用top,并且没有相应的"bottom"子句.
top的优点是你不必担心重置它.如果您使用数据库连接池,这一点尤为重要.
Ale*_*lli 22
我相信你可以先做SET ROWCOUNT 10
,然后在这个会话中进行所有查询,直到进一步SET ROWCOUNT
返回不超过10行.正如评论所指出的,这会影响会话中的所有后续查询(不仅仅是SELECT
s!),直到关闭(通过设置为0)或设置不同 - 这种"全局"效果使其不如LIMIT
其他引擎的典型子句方便,这本质上是每个查询,但是,我不认为你可以做任何事情.
小智 5
我碰巧偶然发现了这个问题,并使用 TOP 和 START AT 从 sybase doc 替换了 MySQL LIMIT 找到了答案。您需要使用 ORDER BY 否则您将获得不可预测的结果。
http://dcx.sybase.com/1101/en/dbusage_en11/first-order-formatting.html
SELECT TOP 2 START AT 5 * FROM Employees ORDER BY Surname DESC;
归档时间: |
|
查看次数: |
58919 次 |
最近记录: |