Aloese mai le fa'aogaina o le OFFSET ma le LIMIT i fa'amatalaga fa'aigoaina

Ua mou atu aso na e le tau popole ai e uiga i le fa'amalieina o fa'atinoga o fa'amaumauga. E le tumau le taimi. Soʻo se pisinisi fou tekonolosi e manaʻo e fatuina le isi Facebook, aʻo taumafai e aoina uma faʻamatalaga e mafai ona latou maua. E manaʻomia e pisinisi nei faʻamatalaga e faʻaleleia atili ai faʻataʻitaʻiga faʻataʻitaʻiga e fesoasoani ia i latou e maua ai tupe. I ia tulaga, e manaʻomia e le au fai polokalame le fatuina o API e mafai ai ona latou galulue vave ma faʻatuatuaina ma le tele o faʻamatalaga.

Aloese mai le fa'aogaina o le OFFSET ma le LIMIT i fa'amatalaga fa'aigoaina

Afai o lo'o e fuafuaina le fa'aoga po'o fa'amaumauga i tua o fa'amaumauga mo so'o se taimi umi, masalo ua e tusia ni fa'ailoga e fa'atino ai fa'amatalaga fa'aigoa. Mo se faʻataʻitaʻiga, pei o lenei:

SELECT * FROM table_name LIMIT 10 OFFSET 40

O le auala e iai?

Ae afai o le auala lea na e faia ai lau pagination, ou te faamalie atu e te leʻi faia i se auala sili ona lelei.

E te fia tetee mai ia te au? E te mafaia faʻaalu время. faatuai, Shopify и Mixmax O loʻo latou faʻaogaina auala ou te fia talanoa ai i le asō.

Ta'u mai ia le itiiti ifo ma le tasi le tagata atia'e pito i tua e le'i fa'aaogaina lava OFFSET и LIMIT e fa'atino fa'ailoga fa'ailoga. I le MVP (Minimum Viable Product) ma i galuega faatino e fa'aogaina ai ni fa'amatalaga laiti, o lenei faiga e fa'aoga talafeagai. “E na o le galue lava,” o lona uiga.

Ae afai e te manaʻomia le fatuina o faiga faʻalagolago ma lelei mai le sasa, e tatau ona e faʻaeteete muamua e uiga i le lelei o le fesiligia o faʻamaumauga o loʻo faʻaaogaina i ia faiga.

O le asō o le a tatou talanoa e uiga i faʻafitauli i le masani ona faʻaaogaina (leaga) faʻatinoga o faʻailoga faʻailoga faʻailoga, ma pe faʻapefea ona ausia le maualuga pe a faʻatino ia fesili.

O le a le mea o faaletonu ile OFFSET ma le LIMIT?

E pei ona uma ona fai atu, OFFSET и LIMIT Latou te faʻatinoina lelei i galuega faatino e le manaʻomia le galue ma le tele o faʻamaumauga.

O le faʻafitauli e tulaʻi mai pe a faʻatupulaʻia le database i se lapoʻa e le toe fetaui i le mafaufau o le server. Ae ui i lea, a e galue ma lenei faʻamaumauga, e manaʻomia lou faʻaogaina o fesili faʻasalalau.

Mo lenei faʻafitauli e faʻaalia ia lava, e tatau ona i ai se tulaga e faʻaogaina ai e le DBMS se faʻaoga le lelei o le Full Table Scan i luga o fesili faʻapitonuʻu taʻitasi (aʻo faʻapipiʻi ma tapeina gaioiga e ono tupu, ma matou te le manaʻomia ni faʻamatalaga tuai!).

O le a le “fa'asologa o laulau atoa” (po'o le “fa'asologa o laulau fa'asolosolo”, Fa'asologa Fa'asologa)? Ole fa'agaioiga lea e faitau fa'asolosolo ai e le DBMS laina ta'itasi o le laulau, o lona uiga, o fa'amaumauga o lo'o iai i totonu, ma siaki ai mo le tausisia o se tu'utu'uga. O lenei ituaiga su'ega laulau ua iloa e sili ona tuai. O le mea moni o le taimi e faʻataunuʻu ai, e tele faʻaoga faʻaoga / mea e faʻatinoina e aofia ai le subsystem disk a le server. O le tulaga e sili atu ona leaga ona o le le tumau e fesoʻotaʻi ma le galue ma faʻamaumauga o loʻo teuina i luga o tisiki, ma o le mea moni o le fesiitaiga o faʻamatalaga mai le disk i le manatua o se faʻagaioiga malosi.

Mo se faʻataʻitaʻiga, o loʻo i ai au faʻamaumauga o le 100000000 tagata faʻaoga ma e te faʻatautaia se fesili ma le fausiaina OFFSET 50000000. O lona uiga e tatau i le DBMS ona utaina uma nei faamaumauga (ma matou te le manaʻomia lava!), tuʻu i latou i le mafaufau, ma a maeʻa lena, fai mai, 20 iʻuga na lipotia i totonu. LIMIT.

Sei tatou fai atu atonu e pei o lenei: "filifili laina mai le 50000 i le 50020 mai le 100000". O lona uiga, e manaʻomia muamua e le faiga le utaina o laina 50000 e faʻamaeʻa ai le fesili. Pe e te iloa le tele o galuega lē manaʻomia e tatau ona ia faia?

Afai e te le talitonu ia te aʻu, vaʻai i le faʻataʻitaʻiga na ou faia e faʻaaoga ai foliga db-fiddle.com

Aloese mai le fa'aogaina o le OFFSET ma le LIMIT i fa'amatalaga fa'aigoaina
Faataitaiga ile db-fiddle.com

O iina, i le itu tauagavale, i le fanua Schema SQL, o loʻo i ai le faʻailoga e tuʻu ai 100000 laina i totonu o faʻamaumauga, ma i le itu taumatau, i le fanua. Query SQL, e lua fesili o loʻo faʻaalia. O le muamua, fa'agesegese, e pei o lenei:

SELECT *
FROM `docs`
LIMIT 10 OFFSET 85000;

Ma o le lona lua, o se fofo aoga i le faafitauli lava e tasi, e pei o lenei:

SELECT *
FROM `docs`
WHERE id > 85000
LIMIT 10;

Ina ia faʻataunuʻuina nei talosaga, naʻo le kiliki i luga o le ki Run i le pito i luga o le itulau. A uma ona faia lenei mea, matou te faʻatusatusaina faʻamatalaga e uiga i le taimi o le faʻatinoina o fesili. E aliali mai o le faʻatinoina o se fesili le aoga e manaʻomia le itiiti ifo i le 30 taimi le umi nai lo le faʻatinoina o le lona lua (o le taimi lenei e ese mai le tamoe i le tamoe; mo se faʻataʻitaʻiga, e mafai e le faiga ona lipotia o le fesili muamua na ave le 37 ms e faʻamaeʻa ai, ae o le faʻatinoina o le lona lua - 1 ms).

Ma afai e tele faʻamatalaga, o mea uma o le a sili atu ona leaga (ina ia faʻamaonia lenei mea, vaʻai i laʻu faataitaiga ma le 10 miliona laina).

O mea na matou talanoaina e tatau ona tu'uina atu ia te oe ni fa'amatalaga i le auala e fa'agasolo moni ai fa'amatalaga fa'amaumauga.

Faamolemole ia matau o le maualuga o le tau OFFSET - ole umi ole talosaga e fa'auma.

O le a le mea e tatau ona ou faʻaogaina nai lo le tuʻufaʻatasia o OFFSET ma LIMIT?

Nai lo o se tuufaatasiga OFFSET и LIMIT E aoga le faʻaaogaina o se fausaga fausia e tusa ai ma le polokalame lenei:

SELECT * FROM table_name WHERE id > 10 LIMIT 20

Ole fa'atinoga ole fesili lea ile fa'asino ile fa'asino ile fa'ailoga.

Nai lo le teuina o mea fou i le lotoifale OFFSET и LIMIT ma tuʻuina atu i talosaga taʻitasi, e te manaʻomia le teuina o le ki autu mulimuli na maua (e masani lava o le ID) ma LIMIT, o se taunuuga, o le a maua fesili e pei o luga.

Aisea? O le manatu e ala i le faʻamaonia manino o le faʻamatalaga o le laina mulimuli faitau, e te taʻu atu i lau DBMS le mea e manaʻomia e amata suʻe ai faʻamatalaga talafeagai. E le gata i lea, o le sailiga, faʻafetai i le faʻaogaina o le ki, o le a faʻatinoina lelei;

Se'i tatou va'ai i le fa'atusatusaga o fa'atinoga o fesili eseese. Ole fesili le aoga lea.

Aloese mai le fa'aogaina o le OFFSET ma le LIMIT i fa'amatalaga fa'aigoaina
Talosaga lemu

Ma o se faʻamatalaga sili ona lelei o lenei talosaga.

Aloese mai le fa'aogaina o le OFFSET ma le LIMIT i fa'amatalaga fa'aigoaina
Talosaga vave

O fesili uma e lua e toe faʻafoʻi tutusa le aofaʻi o faʻamatalaga. Ae o le muamua e 12,80 sekone e fa'amae'a ai, ae o le lona lua e 0,01 sekone. E te lagona le eseesega?

Faʻaiʻuga ono

Mo le auala e fa'atatau i fesili e galue lelei, o le laulau e tatau ona i ai se koluma (po'o koluma) o lo'o i ai fa'ailoga tulaga ese, fa'asologa, e pei o se fa'ailoga numera. I nisi o tulaga fa'apitoa, e ono fa'amauina ai le manuia o le fa'aogaina o ia fa'afesili e fa'ateleina ai le saoasaoa o le galue ma le fa'amaumauga.

E masani lava, pe a fausia ni fesili, e tatau ona e amanaʻia le fausaga faʻapitoa o laulau ma filifili na masini e sili ona aoga i luga o laulau o loʻo iai. Mo se faʻataʻitaʻiga, afai e te manaʻomia le galue i fesili ma le tele o voluma o faʻamatalaga fesoʻotaʻi, atonu e te fiafia i ai uila tala.

Afai tatou te feagai ma le faʻafitauli o le misia o se ki autu, mo se faʻataʻitaʻiga, pe a fai o loʻo i ai se matou laulau ma se vaʻaiga tele-i-tele, o le auala masani o le faʻaaogaina. OFFSET и LIMIT, ua mautinoa e fetaui ma i tatou. Ae o lona fa'aogaina e ono i'u ai i ni fesili e ono tuai. I ia tulaga, ou te fautuaina le faʻaaogaina o le auto-incrementing primary key, e tusa lava pe naʻo le manaʻomia e faʻatautaia ai fesili faʻasalalau.

Afai e te fiafia i lenei mataupu - faauta, faauta и faauta - tele mea aoga.

O taunuʻuga

O le faaiuga autu e mafai ona tatou tusia, e tusa lava po o le a le tele o faʻamaumauga o loʻo tatou talanoa ai, e manaʻomia i taimi uma le suʻesuʻeina o le saoasaoa o le faʻatinoina o fesili. I aso nei, o le faʻalauteleina o fofo e matua taua lava, ma afai e saʻo mea uma mai le amataga o le galue i luga o se faiga faʻapitoa, o le mea lea, i le lumanaʻi, e mafai ona laveaʻiina le atinaʻe mai le tele o faʻafitauli.

E fa'afefea ona e su'esu'eina ma fa'asilisili fesili i fa'amaumauga?

Aloese mai le fa'aogaina o le OFFSET ma le LIMIT i fa'amatalaga fa'aigoaina

puna: www.habr.com

Faaopoopo i ai se faamatalaga