Portál AbcLinuxu, 9. června 2024 14:39
Pracuji teď na jednom projektu, který má v jedné tabulce celkem dost záznamů - ano, není to žádné extrémní číslo, ve velkých projektech bych spíše řekl, že normální, nebo naopak ještě malé. Teď ale k zajímavosti, na kterou jsem narazil, a to je rozdíl počtu záznamů v databázi.
V phpMyAdminu si nechám vypsat obsah tabulky (akce Projít) s následujícím výsledkem - Zobrazeny záznamy 0 - 29 (138 181 celkem, Dotaz zabral 0.0192 sekund). Tuto činnost si pro úspěch zopakujeme, výsledek - Zobrazeny záznamy 0 - 29 (139 083 celkem, Dotaz zabral 0.0004 sekund), a znovu s výsledkem - Zobrazeny záznamy 0 - 29 (138 688 celkem, Dotaz zabral 0.0004 sekund).
Nyní provedu to samé, ale přímo v konzoli mysql. Po vykonání příkazu SELECT COUNT(`id`) FROM `tabulka`; dostávám pokaždé stejný výsledek - 138 592. Otázkou tedy je, kde se v phpMyAdminu data ztrácí, resp. přidávají. Dotaz by měl být snad téměř stejný, možná jiný, ale minimálně by měl vracet neustále stejný výsledek, pokud se s daty nijak nemanipuluje.
Chvíli jsem nad tím zkoumal, ale vůbec mne nenapadá, kde je chyba. Setkal se již někdo z Vás s podobným případem?
Tiskni Sdílej:
Nejde náhodou o tento případ wiki.phpmyadmin.net/pma/FAQ_3.11?
Indexy? (nedávno jsem zaregistroval, že při výpisu přes jeden index to mělo víc záznamů než přes ten druhý).
Btw. dotaz, který vygeneruje milion řádků je ještě jakžtak, ale ve chvíli kdy potřebuji provést jeden subdotaz na relativizaci určitých hodnot tak časová náročnost jde úplně do...
Zobrazeny záznamy 0 - 29 (~16 0491 celkem, Dotaz zabral 0.0003 sekund) 1 Může být nepřesné, viz FAQ 3.11
Chvíli jsem nad tím zkoumal, ale vůbec mne nenapadá, kde je chyba. Setkal se již někdo z Vás s podobným případem?
Ano setkal, je to tak jak píše Michal (hint: mrkni se na autory phpmyadmina ). Velikost "velké" tabulky lze nastavit v configu:
$cfg['MaxExactCount'] = 100000;
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.