2009-10-19 39 views
24

Tôi cần truy vấn cơ sở dữ liệu Sybase có nhiều dữ liệu trong đó và muốn đặt giới hạn để DB dừng truy vấn sau 10 kết quả.Làm cách nào để hạn chế số lượng kết quả được trả lại trong Sybase?

Điều quan trọng là hiệu suất, vì vậy nó sẽ không sử dụng nếu nó tìm kiếm tất cả các kết quả và sau đó trả lại 10 kết quả cuối cùng.

Cảm ơn trước

+0

Bạn muốn 10 điều gì? 10 người đầu tiên? –

Trả lời

20

Tôi tin rằng bạn có thể làm một SET ROWCOUNT 10 đầu tiên, sau đó tất cả các truy vấn trong phiên này cho đến khi thêm SET ROWCOUNT sẽ trở lại không quá 10 dòng. Khi nhận xét chỉ ra, điều này ảnh hưởng đến tất cả truy vấn sau đây trong phiên (không chỉ SELECT s!) Cho đến khi tắt (bằng cách đặt thành 0) hoặc đặt khác - hiệu ứng "toàn cầu" này khiến nó kém tiện lợi hơn so với LIMIT điển hình điều khoản của các công cụ khác, vốn vốn đã từng truy vấn, nhưng, tôi không nghĩ bạn có thể làm bất cứ điều gì về điều đó.

+6

Và SET ROWCOUNT 0 để tắt giới hạn số lượng hàng. –

+2

Cũng đáng nhấn mạnh trong khi nó được đặt thành một giá trị khác không (như cập nhật và xóa) sẽ bị ảnh hưởng – Hobo

+0

cảm ơn rất nhiều, chính xác những gì tôi cần – Ryan

36

Với Sybase 12.5 và sau đó bạn có thể sử dụng vị từ trên cùng trong câu lệnh chọn. Đây là một tính năng không ANSI mà MSSQL đã có trong một thời gian dài.

select top 10 * from people 

Bạn không thể sử dụng các truy vấn con, cập nhật hoặc xóa hàng đầu và không có mệnh đề 'dưới cùng' tương ứng.

Lợi thế của đầu là bạn không phải lo lắng về việc đặt lại nó. Điều này đặc biệt quan trọng nếu bạn đang sử dụng một nhóm kết nối cơ sở dữ liệu.

+1

là có cách nào bạn có thể thực hiện việc này để cập nhật? –

+0

Nó hoạt động cho UPDATE và DELETE. '' 'CẬP NHẬT TOP 10 TỪ người ...' '' '' 'DELETE TOP 10 người''' Xem http://infocenter.sybase.com/help/index.jsp?topic=/com .sybase.help.doc.ase_docs_12.5.3.newfeatures1253_rev/html/newfeatures1253_rev/newfeatures1253_rev11.htm –

-1

Bạn có thể thử thêm mệnh đề này "chỉ tìm nạp n hàng đầu tiên".

+0

tính năng này không hoạt động. Bạn đã có một tài liệu tham khảo? – Beginner

+0

Điều này không làm việc cho Sybase, điều này là dành cho DB2. – skw

Các vấn đề liên quan