image/svg+xml

» Poradna » Počítačové sítě

Velká MySQL tabulka, optimalizace SELECT pro stránkování

 | Microsoft Windows 7 Chrome 19.0.1084.56

Zdravím,
Mám v mysql tabulku (říkejme ji třeba "pokus") a ta obsahuje přes 1 500 000 záznamů.
Potřeboval bych udělat stránkování (to mám již vyřešené), nicméně když vypíši tímto příkladem data pro danou stránku:

$sql = "SELECT * FROM videos ORDER BY id DESC LIMIT $limit_start,40";
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result))
{
........
}

pokud je $limit_start třeba 500 (LIMIT 500,40) je všecko ok, ale pokud mám $limit_start třeba 750000 (LIMIT 750000,40) tak se to strašně dlouho načítá (nebo vůbec).

Můžete mi prosím někdo poradit, jak mám udělat tento dotaz efektivně, abych nemusel číst všecky řádky v tabulce i když je nepotřebuji, ale aby se vypsalo jen těch 40 a rychlost byla furt stejná (co nejvyšší)??

Díky moc všem, kteří přispějí do diskuze

Odpovědi na otázku

 |   |  Microsoft Windows 7 Chrome 19.0.1084.56

Máš na sloupci id index?

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 7 Chrome 19.0.1084.56

Klíčový název = Typ = Mohutnost = Akce = Sloupec
PRIMARY = PRIMARY = XXXX = id

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 19.0.1084.56

Tak to si už moc nepomůžeš. Stránkování není moc určené na to, aby se dalo skočit i na stránku s velkým pořadovým číslem.

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 7 Chrome 19.0.1084.56

Já bych řekl, že to nějak jít musí. Máš spousty webů, které mají třeba 30 000 stran a když přejdeš na stranu 23 000 tak je to stejně rychle načtené, jako když přejdeš na stranu 3

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 19.0.1084.56

Jenže ty nepoužívají MySQL...

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 7 Chrome 19.0.1084.56

A co jiného bys doporučil, pgSQL?

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 19.0.1084.56

Třeba. Ale problémy s tím budou mít všechny databáze.
Pomoci by mohlo třeba rozdělení řádků tabulky na několik menších, pokud jsou jednotlivé řádky rozsáhlé.

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 IE 9.0

našel jsem si u sebe tabulku, která má 3,5 miliónu řádků 50MB v datech a 170MB ve čtyřech indexech a bez problémů mi to stránku (v phpMyAdminu) a dotazy se vykonávají cca 0,15s

Takže problém není v použití MySQL, ale v tom, jak je použité - tedy indexy a konfigurace (přidělení paměti) tak, aby se nepracovalo s diskem, ale vše bylo v paměti

Souhlasím  |  Nesouhlasím
 | Microsoft Windows 7 Chrome 19.0.1084.56

Index (id) má 15Mb, celá databáze má 1,6GB

Průměrná délka řádku: 1123
Průměrná velikost řádku: 1134 B

Úložiště: MyISAM

DB jede na VPSce u Wedos hosting (2 moduly VPS)

Pokud bys mi poradil, jak a co lépe nastavit, byl bych ti vděčný.
Nikdy jsem s tak velkou DB nepracoval

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 19.0.1084.56

Kolik máš přiděleno paměti? Pokud pár (set) MB, tak se není moc čemu divit.

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 Chrome 19.0.1084.56

Tak jestli má jeden řádek 15 bytů, tak se nedivím, že to jede rychle.

Souhlasím  |  Nesouhlasím
 |   |  Microsoft Windows 7 IE 9.0

no ale o tom to taky je, že v té "velké" tabulce mám jen to minimum a zbytek připojuji z dalších tabulek, ale nemusím to dělat pro všechny záznamy, ale jen pro těch 40, co jsou na té jedné stránce

Souhlasím  |  Nesouhlasím

Související témata: Select, Optimalizace, Videos




Určitě si přečtěte

Našli jsme 22 schopných internetových prohlížečů: Vyberte si, který vám nejvíc sedne

Našli jsme 22 schopných internetových prohlížečů: Vyberte si, který vám nejvíc sedne

** Není jen Chrome, Firefox, Edge či Opera. Na výběr máte mnohem více! ** Internetové prohlížeče se liší funkcemi, zaměřením i designem. Našli jsme 22 použitelných prohlížečů pro Windows ** Vyberte si prohlížeč, který vám bude nejvíce vyhovovat

Karel Kilián | 30

Velká jarní aktualizace Windows 10: Co přináší April 2018 Update

Velká jarní aktualizace Windows 10: Co přináší April 2018 Update

** Po necelém půl roce je tu další aktualizace Windows ** Přináší časovou osu nebo sdílení souborů jako na mobilu ** A také Application Guard, který umí virtualizovat Edge

Jakub Čížek | 143

Alan Turing: Genius, který matematicky stvořil počítač

Alan Turing: Genius, který matematicky stvořil počítač

Řešením matematického problému se dostal k modelu teoretického stroje, který nese jeho jméno a je základem logiky univerzálních počítačů.

Pavel Tronner | 56


Aktuální číslo časopisu Computer

Kdy necháme řídit chytrá auta?

6 Wi-Fi Mesh systémů ve velkém testu

Srovnali jsme 7 sportovních kamer

Znáte pravidla pro létání s drony?