kopia lustrzana https://github.com/simonw/datasette
Initial documentation for pagination
rodzic
e63f432fe5
commit
cac32b0ec4
|
@ -127,3 +127,29 @@ Canned queries support named parameters, so if you include those in the SQL you
|
||||||
will then be able to enter them using the form fields on the canned query page
|
will then be able to enter them using the form fields on the canned query page
|
||||||
or by adding them to the URL. This means canned queries can be used to create
|
or by adding them to the URL. This means canned queries can be used to create
|
||||||
custom JSON APIs based on a carefully designed SQL.
|
custom JSON APIs based on a carefully designed SQL.
|
||||||
|
|
||||||
|
Pagination
|
||||||
|
----------
|
||||||
|
|
||||||
|
Datasette's default table pagination is designed to be extremely efficient. SQL
|
||||||
|
OFFSET/LIMIT pagination can have a significant performance penalty once you get
|
||||||
|
into multiple thousands of rows, as each page still requires the database to
|
||||||
|
scan through every preceding row to find the correct offset.
|
||||||
|
|
||||||
|
When paginating through tables, Datasette instead orders the rows in the table
|
||||||
|
by their primary key and performs a WHERE clause against the last seen primary
|
||||||
|
key for the previous page. For example::
|
||||||
|
|
||||||
|
select rowid, * from Tree_List where rowid > 200 order by rowid limit 101
|
||||||
|
|
||||||
|
This represents page three for this particular table, with a page size of 100.
|
||||||
|
|
||||||
|
Note that we request 101 items in the limit clause rather than 100. This allows
|
||||||
|
us to detect if we are on the last page of the results: if the query returns
|
||||||
|
less than 101 rows we know we have reached the end of the pagination set.
|
||||||
|
Datasette will only return the first 100 rows - the 101st is used purely to
|
||||||
|
detect if there should be another page.
|
||||||
|
|
||||||
|
Since the where clause acts against the index on the primary key, the query is
|
||||||
|
extremely fast even for records that are a long way into the overall pagination
|
||||||
|
set.
|
||||||
|
|
Ładowanie…
Reference in New Issue