Abfrage auf letzte 1000 begrenzen

Werbung:
Code:
select table.column from table where 1 = 1 order by table.column limit 1000;

Das Zauberwort ist einfach "limit 1000" am Ende des Syntax.
Nachdem ich nicht weiß, wie sie bei dir geordnet sind, habe ich einen funktionierenden (Prinzipiell) Code oben geschrieben.
 
Hallo
danke für Antwort. Wird mit limit nicht das Ergebniss auf 1000 reduziert aber erst die ganze Datenbank durchsucht ?

ich habe rd 75000 Datensatze im der Datenbank
für eine Abfrage in Datensätzen des letzten Tages würde mir eine suche in den letzten 200 Datensätzen reichen.

d.h ich möchte das das select nur in den letzten 200 (oder1000) Datensätzen sucht
stelle mir vor das die Abfrage dann schneller ist .

Meinolf
 
Werbung:
Um solche und weitere Fragen zu beantworten haben 'richtige' Datenbanken das EXPLAIN. Schauen wir mal in PostgreSQL nach:

Code:
test=# create table dl6dbh (id serial primary key, val numeric);
CREATE TABLE
test=*# insert into dl6dbh (val) select random()*10000 from generate_series(1,100000) s;
INSERT 0 100000
test=*# create index idx_val on dl6dbh (val);
CREATE INDEX
test=*# commit;
COMMIT
test=# analyze dl6dbh ;
ANALYZE
test=*# explain analyse select * from dl6dbh order by val limit 100;
                                                           QUERY PLAN                                                           
---------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost=0.42..5.63 rows=100 width=15) (actual time=0.038..0.138 rows=100 loops=1)
   ->  Index Scan using idx_val on dl6dbh  (cost=0.42..5216.32 rows=100000 width=15) (actual time=0.037..0.127 rows=100 loops=1)
 Planning Time: 0.187 ms
 Execution Time: 0.156 ms
(4 rows)

test=*#

Und wir sehen: der Index, der ja auch eine Sortierung hat, wird verwendet - und das LIMIT wirkt schon auf den Index-Scan.
 
Zurück
Oben