MySQL LIMIT: opis, sintaksa, primjeri i preporuke

Odabir određenog broja zapisa iz velikog skupa dobra je ideja, ali kada je skup zaista velik, postoji učinak degradiranja ideje. Odabir više unosa s određenog položaja stvara pravi pad performansi: prije postizanja cilja, MySQL gleda na druge unose, trošeći vrijeme na njemu.

Formalno, MySQL granica može raditi od početka tablice ili od njenog kraja. Uzorkovanje može odrediti određeni broj unosa od određenog položaja. Uvijek može biti incident, to jest, početak najgore situacije je moguć. Obično, ukupni protok kupaca određuje opći statistički način rada, ali je potrebno predvidjeti različite situacije, to je ozbiljna odluka u korist stranice.


Strukturna sintaksa LIMIT

U službenim izvorima, sintaksa ograničenja MySQL-a je označena kako je prikazano na slici ispod u kontekstu upita za odabir i brisanje.
Zahtjev za uzorak (select) uključuje dva broja: pomak "O" i "R", zahtjev za brisanje se piše jednim brojem - briše se broj unosa "R".

Velike vrijednosti granice "O, R"

MySQL granica: sintaksa dopušta odabir vrijednosti u bilo kojoj shemi. Osnovni uvjeti: "O" je pomak prvog odabranog zapisa, "R" je broj odabranih unosa. Problem je u tome što ako "O" = 9000 tada prije MySQL-a odabere 9001 zapis, proći će kroz prvih 9000. Ako je R = 1000 onda će ukupni uzorak "uzeti" 10.000 zapisa. MySQL select limit može raditi od početka tablice ili od njenog kraja, ovisno o smjeru sortiranja zapisa asc /desc. Mogućnost rada od krajaTablice nisu obećavajuće rješenje, iako je u nekim situacijama teško bez njega.


Dizajn, gdje bi veliki "R" bio od malog interesa za programera i korisnika: MySQL briše granicu. A to je daleko od svih slučajeva. U ovom nacrtu, glavni teret odgovornosti leži u stanju uzorka (gdje) izbrisanih zapisa. Za sigurnost i kontrolu procesa brisanja zapisa, programer je obično zainteresiran za korištenje AJAX mehanizma i brisanje zapisa u malim dijelovima. S takvim mehanizmom posjetitelj neće primijetiti kašnjenja u dizajnu brisanja.

Uzorak po jedinstvenom zapisu

Ispravno stanje gdje i upit "limit 1" MySQL će se izvršiti odmah. Ali brisanje ili odabir jednog unosa nije uvijek dobra odluka. Tipično, inkrementalno uzorkovanje za sve unose u tablici koristi se za organizaciju podataka stranica (na primjer, komentari, članci, recenzije proizvoda). Odluka o izgradnji sadržaja web stranice trebala bi biti donesena odmah, ali s klasičnom upotrebom MySQL granice O, R će se brzo odabrati samo prvih deset od prvih stotinu zapisa, a zatim početi odgađati. U međuvremenu, nije sve tako teško, možete brzo birati snimanjem, ali pobijediti zbog dizajna i logike izlaza zapisa u preglednik posjetitelja.
Ništa ga ne sprječava da ga učini spektakularnim i prikrije kobno kašnjenje u dijalogu stvaranja sadržaja.

Relacijski odnos u MySQL-u

MySQL je izvrstan alat za prezentiranje i obradu informacija. Programer ima dobar dijalekt jezikaSQL i prikladan mehanizam za stvaranje upita. Evidentiraju se pogreške i nepredviđene situacije, pristup podacima se upravlja do razine osnovnih operacija.
Svi se nedostaci odnose na sam koncept relacijskih odnosa. Što učiniti, ovaj koncept funkcionira tako fundamentalno i pouzdano, ništa ne preostaje raditi, kako uzeti u obzir njegove posebnosti i uzeti ih u obzir. Sadašnja razina razvoja hardvera, kvalitetna implementacija funkcionalnosti svih MySQL alata (ograničenje nije iznimka) osigurava dostupnost velikih količina podataka pri velikim brzinama i, što je najvažnije, uzorkovanju.

Velike količine i standardni keš

Buffering podataka prije snimanja i nakon uzorkovanja - ideja je divna, ima svoje podrijetlo iz dalekih 80-ih. Caching je postao moderan na svim razinama obrade podataka od procesora, mreže, do, naravno, razine http-poslužitelja i zapravo baza podataka. Programer može kontaktirati administratora poslužitelja ili se konfigurirati u privremenom spremniku na razini Apachea i MySQL-a, ili nekom drugom kombinacijom softvera koji se koristi za rad web-resursa i MySQL poslužitelja.
Ovo je normalno, standardno rješenje. U većini slučajeva to je uobičajeno. U programiranju, dugo tražena ideja podjele rada. Programer stvara web-lokacije, administrator upravlja radom svega što pruža optimizaciju korištenja web-lokacije. U kritičnim situacijama, kada su tablice baze podataka velike, moraju se odmaknuti od usvojenih kanona. Morate nešto promijeniti u organizaciji podataka.

TablichnaPaging organizacija

Programeri su navikli na: relacijsku bazu podataka - zbirku stolova međusobno povezanih ključevima. Ova jednostavna ideja, poput tablice, predstavljena je masom sličnih stranica istog imena, ali različitih indeksa koji nadilaze uobičajenu reprezentaciju.
Ali što je ovdje smiješno? Tablica je skup zapisa koji sadrže različite podatke, koji odgovaraju tipovima polja (stupci, zaglavlja tablice). Upit MySQL ograničenje upita odnosi se na tablicu "big_info" i odabire prikaz c 100000 stavke 24. u pregledniku.
U ovoj odluci u uzorku sudjeluje 100024 redaka - to je dugo vrijeme. Ali ako promijenite situaciju i cijelu "big_info" proračunsku tablicu za nekoliko stotina tablica "big_info [0999]" za 1000 unosa, tada će se problem pojaviti samo kada se MySQL naziva "redoslijedom * ograničenjem O, R" jer će sortiranje biti izuzetno komplicirano. Međutim, ne samo sortiranje, nego i bilo koja druga radnja na svim zapisima nije moguća pomoću baze podataka iznad tablice, koja je predstavljena s nekoliko tablica. U ovom kontekstu nema indeksa u MySQL-u. Relacijski odnosi pružaju jasnoću: postoji baza podataka, ima tablice, tablice - stupce i zapise. Pa, postoje "losioni": pohranjene procedure, okidači, uvjeti i druge pojedinosti.

Sopstvena cache i koncept važnosti

Dobra ideja "Yandex" - "toplinske slike": toplinska karta klikova na web stranicama. Ovaj alat u spektralnoj boji prikazuje raspodjelu relevantnosti posjetitelja na "teritorij" stranice. Očigledno, uskoro će se pojaviti novi školski predmet - geografija web stranice: gdje i što smjestiti. Dobar dodatak generalugeografija Ova ideja, prevedena na teritorij zapisa velikih tablica baze podataka, omogućuje nam da formuliramo objektivnu tezu: nije čitav teritorij zapisa tražen i nije uvijek.
Što je veći broj posjetitelja, više je pravilnosti za potrebe uzorka. MySQL granica se uvijek izvršava točno i uvijek iz određenog razloga. Okupljanje konkretnih razloga nikada neće uspjeti. Za svaki specifičan razlog, MySQL granični rezultati u svakom slučaju su trivijalni. Ispada ne tablica organizacija stol u obliku stotine sličnih stranica, i stožac potražnje za informacijama. Samo u smrtnim slučajevima ili pri ulasku na stranicu informativnog posjetitelja nalazi se uzorak velikih količina podataka. Obično se odabiru žetoni. Pojedinačni keš rješava problem brzine: uzorak ide na ključni "specifični uzrok" iz male tablice rezultata nedavnih operacija uzorka iz jedne velike tablice.

Sortiranje i druge veleprodajne operacije

Problem velikih količina podataka leži u performansama hardverskog softvera. Danas je postignuta ogromna razina izvedbe, ali su se i podaci o količinama podataka naglo povećali. Kada se brzina i kvaliteta cesta povećaju, potreba za brzim kretanjem i trenutačnim rješenjem zadataka je adekvatno povećana. Jednostavna operacija sortiranja, pisanja ili pretraživanja izravno ili neizravno utječe na sve zapise velike tablice - potencijalne kočnice, zajamčenog gubitka performansi.
Relacijskiodnos je bio predug za dlan prvenstva, ali da bi ustupio put do danas nema namjeru: samo nikome. Ostale varijante organizacije podataka, koje pružaju trenutnu navigaciju na velikim količinama informacija, nisu čak ni došle do super-vođe industrije "Great Information" - Oracle. No, Oracle je pružio dobro iskustvo i izvrsno znanje u primjeni SQL-jezika i njegovih dijalekata. Na MySQL funkciji, ima određeni pečat kvalitete. Programer može sigurno koristiti MySQL dizajn ograničenja na jednoj podatkovnoj tablici i imati slobodan pristup veleprodajnim operacijama nad ovom velikom tablicom.

Prirodna percepcija informacija

Osoba percipira i obrađuje, uglavnom nesvjesno, veliku količinu informacija koje nisu dostupne najnaprednijim alatima iz Oraclea. Ali ne može biti osobito ponosan na to. Oracle može migrirati takve količine podataka i izvršiti takvo sortiranje, što zahtijeva izvođenje više od stotinu slučajeva ljudskog života.
Svatko mora obaviti svoj posao i to učiniti na najučinkovitiji način. Relacijski stavovi nikada neće biti izbrisani - oni su svojstveni podacima, oni su sastavni dio njih. No implementacija baza podataka u relacijskim odnosima nema semantiku. Ključna organizacija, indeksi za pristup zapisima nisu sadržaji koji omogućuju brz pristup informacijama. Dosljedna organizacija memorije stroja i emulacija asocijativnog pristupa informacijama - pravi razlog za gubitak vremena pri pristupanju velikoj tablici za uzorkovanje neke informacije dok se ona pridržavaintegritet za grupne operacije.

Informacijski objekti i prirodne udruge

Izbjegavajte slijed u provedbi operacija koje programer još ne može. Tako uređen računalni svijet. Računalo ima jednu procesorsku i multi-core i multiprocesorsku varijantu - to još uvijek nije neuralna organizacija paralelne obrade informacija koja koristi ljudsko razmišljanje. Razvoj algoritma uvijek privlači jedan proces, premda je podijeljen na mnoge struje. Programiranje je još uvijek na jednoj razini, čak i kada je kôd izgrađen u formatu sustava međusobno povezanih objekata, čije instance funkcioniraju samostalno. Pitanje nije toliko u strukturi informacijskih sustava u obliku nezavisnih objekata, već u okolini koja osigurava njihovo funkcioniranje. Srijeda je dosljedna, a ne paralelna. Rast broja jezgri i broja procesora u jednom računalu, tabletu ili drugom uređaju ne čine ih asocijativnim računalnim uređajima.
Međutim, rezultati su još uvijek prisutni: svaka specifična aplikacija je pitanje na kojemu trebate pronaći brz odgovor. Neophodno je napraviti brz izbor (MySQL granica), dok druga funkcionalnost (MySQL redoslijed, grupiranje, pridruživanje i gdje) neće trpjeti, tablica neće biti podijeljena na mnogo sličnih dijelova, a procedure predmemoriranja će dobiti ažurirane podatke odmah nakon obnove , a ne kada dobiju drugi "specifičan razlog". Jezik SQL-a je dobar jezik, ali ako mu dodate asocijacije, bit će još bolji.

Povezane publikacije