A ape i te whakamahi OFFSET me te LIMIT i roto i nga patai kua whakaingoatia

Kua pahemo nga ra kaore koe i te awangawanga mo te arotau i nga mahinga papaa raraunga. E kore e tu te wa. Ko ia kaipakihi hangarau hou e hiahia ana ki te hanga i te Facebook e whai ake nei, i te wa e ngana ana ki te kohikohi i nga raraunga katoa ka taea e ratou te tiki. Kei te hiahia nga pakihi ki enei raraunga kia pai ake ai nga tauira whakangungu hei awhina i a raatau ki te whai moni. I roto i nga ahuatanga penei, me hanga e nga kaihōtaka nga API e taea ai e ratou te mahi tere me te pono me te nui o nga korero.

A ape i te whakamahi OFFSET me te LIMIT i roto i nga patai kua whakaingoatia

Mena kei te hoahoa koe i te tono, i nga papamuri raraunga mo te roanga o te wa, kua tuhia pea e koe he waehere hei whakahaere i nga patai kua tohua. Hei tauira, penei:

SELECT * FROM table_name LIMIT 10 OFFSET 40

Ko te huarahi?

Engari ki te penei to mahi i to whakaingoatanga, ka pouri ahau ki te kii kaore koe i mahi i te huarahi tino pai.

Kei te pirangi koe ki te whakahe ki ahau? Ka taea e koe e kore whakapau время. mangere, Shopify и Mixmax Kei te whakamahi i nga tikanga e hiahia ana ahau ki te korero i tenei ra.

Whakaingoatia kia kotahi te kaiwhakawhanake tuara kaore ano kia whakamahia OFFSET и LIMIT ki te mahi i nga patai whakaingoatanga. I roto i te MVP (Minimum Viable Product) me nga kaupapa e whakamahia ana te iti o nga raraunga, ka tino tika tenei huarahi. He "mahi noa," hei korero.

Engari ki te hiahia koe ki te hanga i nga punaha pono me te whai hua mai i te tiimatanga, me tupato koe i mua mo te pai o te uiui i nga papaunga raraunga e whakamahia ana i roto i aua punaha.

I tenei ra ka korero tatou mo nga raru e whakamahia ana (he kino rawa) nga whakaurunga o nga miihini patai kua whakaingoatia, me pehea te whakatutuki i nga mahi teitei i te wa e mahia ana enei patai.

He aha te he o OFFSET me te LIMIT?

Ka rite ki kua mea, OFFSET и LIMIT He pai ta ratou mahi i roto i nga kaupapa kaore e tika kia mahi me te nui o nga raraunga.

Ka puta ake te raru ka tipu te papaa raraunga ki te rahi e kore e uru ki roto i te mahara o te tūmau. Heoi, i te wa e mahi ana koe me tenei paataka raraunga, me whakamahi koe i nga patai kua tohua.

Kia puta ake ai tenei raru, me whai waahi te DBMS ki tetahi mahi Matawai Ripanga Katoa i runga i ia patai kua whakaingoatia (i te wa ka puta nga mahi whakauru me te whakakore, a kaore e hiahiatia he raraunga tawhito!).

He aha te "matawai ripanga katoa" (he "matawai ripanga raupapa", Matawai Raupapa)? He mahinga tenei i te wa e panuihia ai e te DBMS ia rarangi o te ripanga, ara, nga raraunga kei roto, ka tirotirohia kia rite ki tetahi ahuatanga. Ko tenei momo karapa tepu e mohiotia ana ko te tino puhoi. Ko te meka ko te wa e mahia ana, he maha nga mahi whakauru/putanga ka mahia e uru ana ki te puunaha kopae a te tūmau. Ka kino ake te ahuatanga na te roanga e pa ana ki te mahi me nga raraunga kua rongoa i runga i nga kopae, me te mea ko te whakawhiti raraunga mai i te kōpae ki te mahara he mahi tino kaha.

Hei tauira, kei a koe nga rekoata o nga kaiwhakamahi 100000000 ka whakahaere koe i tetahi patai me te hanga OFFSET 50000000. Ko te tikanga tenei me utaina e te DBMS enei rekoata katoa (kaore ano e hiahiatia e matou!), ka mau ki roto i te mahara, ka mutu, ka kii, 20 nga hua i ripoatahia LIMIT.

Me kii penei pea te ahua: "twhiria nga rarangi mai i te 50000 ki te 50020 mai i te 100000". Arā, me utaina e te punaha te 50000 rarangi hei whakaoti i te patai. Kei te kite koe i te nui o nga mahi koretake ka mahia e ia?

Ki te kore koe e whakapono ki ahau, tirohia te tauira i hanga e au ma te whakamahi i nga ahuatanga db-fiddle.com

A ape i te whakamahi OFFSET me te LIMIT i roto i nga patai kua whakaingoatia
Tauira i db-fiddle.com

I reira, i te taha maui, i te mara Schema SQL, he waehere hei whakauru i nga rarangi 100000 ki roto i te papanga raraunga, kei te taha matau, i te mara Query SQL, e rua nga patai ka whakaatuhia. Ko te tuatahi, he puhoi, penei te ahua:

SELECT *
FROM `docs`
LIMIT 10 OFFSET 85000;

A ko te tuarua, he otinga whai hua mo te raru ano, penei:

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

Hei whakatutuki i enei tono, paatohia te paatene Run kei runga o te wharangi. Ka oti tenei, ka whakatairitehia e matou nga korero mo te wa mahi uiui. Te ahua nei he 30 nga wa te roa ake o te whakahaere i tetahi patai kore i te mahi tuarua (he rereke tenei waa mai i te oma ki te oma; hei tauira, ka kii pea te punaha ko te patai tuatahi i pau te 37 ms ki te whakaoti, engari ko te mahi o te tuarua - 1 ms).

A, ki te mea he nui ake nga raraunga, katahi ka ahua kino rawa atu nga mea katoa (kia whakaponohia tenei, tirohia taku tauira me te 10 miriona rarangi).

Ko nga mea kua korerohia ake nei me whakaatu ki a koe me pehea te tukatuka o nga paatai ​​​​paparangi raraunga.

Kia mahara ko te teitei ake o te uara OFFSET — ka roa ake te tono kia oti.

He aha me whakamahi hei utu mo te whakakotahitanga o OFFSET me te LIMIT?

Engari he huinga OFFSET и LIMIT He pai ki te whakamahi i te hanganga i hangaia i runga i te kaupapa e whai ake nei:

SELECT * FROM table_name WHERE id > 10 LIMIT 20

He mahi uiui tenei me te whakarangirangi i runga i te pehu.

Engari o te rokiroki o nāianei i te rohe OFFSET и LIMIT me te tuku ki ia tono, me penapena e koe te kii tuatahi kua riro (ko te tikanga tenei ID) a LIMIT, ko te mutunga, ka whiwhi nga patai e rite ana ki nga korero o runga ake nei.

He aha? Ko te mea nui ma te whakaatu i te tohu tohu o te rarangi whakamutunga i panuitia, ka korero koe ki to DBMS me timata ki te rapu i nga raraunga e tika ana. I tua atu, ko te rapu, he mihi ki te whakamahinga o te kii, ka mahi pai; kaore te punaha e raru i nga raina i waho o te awhe kua tohua.

Kia titiro tatou ki te whakataurite mahi e whai ake nei mo nga momo patai. Anei tetahi patai kore whai hua.

A ape i te whakamahi OFFSET me te LIMIT i roto i nga patai kua whakaingoatia
tono puhoi

Anei tetahi putanga papai o tenei tono.

A ape i te whakamahi OFFSET me te LIMIT i roto i nga patai kua whakaingoatia
Tono tere

He rite tonu te nui o nga raraunga ka whakahokia e nga patai e rua. Engari ko te mea tuatahi e 12,80 hēkona kia oti, ko te tuarua he 0,01 hēkona. Ka rongo koe i te rereketanga?

Nga raru pea

Kia pai ai te mahi o te tikanga patai, me whai tīwae (ranei tīwae) te ripanga kei roto i ngā taupū ahurei, raupapa raupapa, penei i te tauutuutu tauoti. I etahi wa motuhake, ka taea e tenei te whakatau i te angitu o te whakamahi i nga patai penei ki te whakanui ake i te tere o te mahi me te paataka raraunga.

Ko te tikanga, i te wa e hanga patai ana, me whai whakaaro koe ki te hoahoanga motuhake o nga teepu me te whiriwhiri i nga tikanga ka pai ake te mahi i runga i nga ripanga o naianei. Hei tauira, ki te hiahia koe ki te mahi i roto i nga paatai ​​​​me nga pukapuka nui o nga raraunga e pa ana, ka kitea e koe he pai tenei tuhinga.

Mena ka pa ki a tatou te raruraru o te ngaro o te matua matua, hei tauira, ki te mea he teepu me te hononga maha-ki-maha, na ko te huarahi tawhito o te whakamahi OFFSET и LIMIT, ka taurangi kia pai ki a maatau. Engari ko tana whakamahinga ka hua pea nga patai puhoi. I roto i enei ahuatanga, ka tūtohu ahau ki te whakamahi i te taviri matua whakanui-aunoa, ahakoa he mea tika ki te hapai i nga patai whakahiato.

Mena kei te pirangi koe ki tenei kaupapa - nana, nana и nana - he maha nga rauemi whai hua.

Ngā putanga

Ko te whakatau matua ka taea e tatou te tuhi, ahakoa he aha te rahi o nga putunga korero e korero ana tatou, me tirotiro tonu te tere o te mahi patai. I enei wa, he mea tino nui te whakamaaramatanga o nga otinga, a ki te mea he mea hanga tika nga mea katoa mai i te tiimatanga o te mahi i runga i tetahi punaha, ka taea e tenei, i te wa kei te heke mai, te whakaora i te kaiwhakawhanake mai i nga raru maha.

Me pehea koe ki te wetewete me te arotau i nga paatai ​​​​papaunga raraunga?

A ape i te whakamahi OFFSET me te LIMIT i roto i nga patai kua whakaingoatia

Source: will.com

Tāpiri i te kōrero