7.6. Limita și OFFSET

limita și OFFSET vă permit să preluați doar o porțiune din rândurile generate de restul interogării:

dacă este dat un număr de limită, nu mai mult de faptul că multe rânduri vor fi returnate (dar posibil mai puțin, dacă interogarea în sine produce mai puține rânduri). Limita totul este la fel ca omiterea clauzei limită.

OFFSET spune pentru a sări peste faptul că mai multe rânduri înainte de a începe să se întoarcă rânduri. OFFSET 0 este același cu omiterea clauzei OFFSET., Dacă apar atât OFFSET, cât și LIMIT, atunci rândurile OFFSET sunt omise înainte de a începe să numărați rândurile limită care sunt returnate.

când utilizați LIMIT, este important să utilizați o clauză ORDER BY care constrânge rândurile de rezultate într-o ordine unică. În caz contrar, veți obține un subset imprevizibil al rândurilor interogării. Ați putea cere pentru a zecea prin douăzecea rânduri, dar zecea prin douăzecea în ce ordine? Comanda este necunoscut, cu excepția cazului în care ați specificat comanda de.,

Optimizatorul de interogări ia în considerare limita atunci când generează un plan de interogare, astfel încât este foarte probabil să obțineți planuri diferite (obținându-se ordine de rând diferite) în funcție de ceea ce oferiți pentru limită și compensare. Astfel, utilizarea diferitelor valori limită / OFFSET pentru a selecta diferite subseturi ale unui rezultat de interogare va da rezultate inconsistente, cu excepția cazului în care impuneți un rezultat previzibil ordonând cu ORDER BY. Aceasta nu este o eroare; este o consecință inerentă a faptului că SQL nu promite să livreze rezultatele unei interogări într-o anumită ordine, cu excepția cazului în care ORDER BY este folosit pentru a constrânge comanda.,

rândurile omise de o clauză OFFSET încă trebuie să fie calculate în interiorul serverului; prin urmare, un OFFSET mare poate fi ineficient.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *