2009-10-19 12 views
24

Potrzebuję do kwerendy bazy danych Sybase, który ma wiele danych w nim, i chciałby ustawić limit, tak aby DB zatrzymuje zapytanie po 10 wyników.Jak ograniczyć ilość zwracanych wyników w Sybase?

Kluczową sprawą jest wydajność, więc nie byłoby sensu, gdyby przeszukiwał wszystkie wyniki, a następnie zwrócił 10 ostatnich wyników.

góry dzięki

+0

Które 10 chcesz? Pierwsze 10? –

Odpowiedz

20

Wierzę, że można zrobić SET ROWCOUNT 10, potem wszystkie zapytania w tej sesji aż do kolejnej SET ROWCOUNT zwróci nie więcej niż 10 wierszy. Jak zaznacza uwaga, dotyczy to następujących zapytań w sesji (nie tylko s!), Dopóki nie zostanie wyłączone (przez ustawienie na 0) lub ustawione inaczej - ten efekt "globalny" sprawia, że ​​jest mniej przydatny niż typowy LIMIT klauzula innych silników, która z natury jest kwerendą, ale nie sądzę, że możesz coś z tym zrobić.

+6

I USTAW ROWCOUNT 0, aby wyłączyć ograniczenie liczby wierszy. –

+2

Warto również podkreślić, że podczas ustawiania wartości niezerowej inne instrukcje (takie jak aktualizacja i usuwanie) będą miały wpływ na – Hobo

+0

bardzo dziękuję, dokładnie to, co potrzebne – Ryan

36

W Sybase 12.5 i nowszych można użyć najwyższego predykatu w instrukcji select. Jest to funkcja inna niż ANSI, którą MSSQL miał od dłuższego czasu.

select top 10 * from people 

Nie można używać top w podkwerendach, aktualizacjach ani usuwać, i nie ma odpowiedniej "dolnej" klauzuli.

Zaletą blatu jest to, że nie musisz się martwić o jego zresetowanie. Jest to szczególnie ważne, jeśli używasz puli połączeń z bazą danych.

+1

czy istnieje sposób, aby to zrobić dla aktualizacji? –

+0

Działa również dla UPDATE i DELETE. '' 'UPDATE TOP 10 OD ludzi ...' '' '' 'USUŃ TOP 10 osób' '' Zobacz 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

Możesz spróbować dodać tę klauzulę "pobierz tylko pierwsze n wierszy".

+0

to nie działa. Czy masz referencje? – Beginner

+0

To nie działa dla Sybase, dotyczy to DB2. – skw

Powiązane problemy