Stránkování u velkých tabulek

publikováno: 2.3.2016

Asi znáte LIMIT a OFFSET (terminologie PostgreSQL, u jiných databází to je podobné). Pomocí LIMIT jsme schopni udělat top-n processing (získat prvních N záznamů). A OFFSET použijeme když nechceme "prvních N záznamů", ale "prvních N záznamů následujících po M záznamech". V případě malých tabulek (cca. do 100 tisíc záznamů) je možné tento přístup používat, ale v případě větších tabulek (miliony záznamů a více) je bohužel nepoužitelný. Co v takové situaci použít? Něco chytřejšího :-)

Je zapotřebí mít číselný sloupec, který obsahuje pořadové číslo záznamu (u PostgreSQL je k tomu ideální SERIAL, u MySQL AUTOINCREMENT apod.). A poté můžeme udělat SELECT, ve kterém získáme například prvních 100,000 záznamů (utříděných podle ID) a uložíme si ID posledního záznamu. A pro další stránku uděláme SELECT, kde opět získáme prvních 100,000 záznamů od posledního uloženého záznamu a tak dále. Nevýhoda je, že se to musí malinko oprogramovat. Výhoda je rychlost získávání jednotlivých stránek, která u LIMIT a OFFSET postupně razantně degraduje, zatímco u tohoto přístupu je konstantní.

Pěkně popsané (včetně obrázků) to také je tady: http://use-the-index-luke.com/sql/partial-results/fetch-next-page

Reference

Školení bych doporučil všem lidem, kteří se chtějí dozvědět něco o DB. Na školeni jsem přišel, jako úplný nováček, co se týče práci s DB a odcházel plný dojmů a

Ondřej

Osobně jsem trošku stále váhající, jestli a jak moc SQL použít. Ale určitě hlavní je to, že se teď už tolik nebojím. Je to pro mě začátek dlouhé cesty. Osobně

Robert

Zajímavé školení, které vhodně kombinovalo teorii a praxi.

Ministerstvo financí
Jan


Novinky

22.3.2019: Termíny SQL školení léto 2019
Nové termíny!!!

3.1.2018: Oracle XE 12c nebude, místo toho bude Oracle XE 18c
V roce 2018 nás čeká nová XE verze a nové verzování

4.4.2017: SAP HANA & Veverka (SQuirrel SQL)
Oficiální SAP HANA studio funguje, ale je hrozně pomalé. Další z nástrojů, kde je možné rozchodit SAP HANA je Veverka (SQuirrel SQL)