Portál AbcLinuxu, 3. listopadu 2025 04:25
Řešení dotazu:
SELECT max(id) FROM tabulka WHERE x="neco"
z čehož teda zase nedostanete to x, navíc nevím, jak moc to pomůže v rychlosti.
Tak me napada, ze MySQL asi vyhleda vsechny radky, kde x="neco", seradi je podle ID pozpatku a pak teprve vybere prvni radek, ktery me zajimaTakovéhle úvahy nedávají smysl. Databáze má optimalizátor dotazů (MySQL tedy zrovna ne nijak hvězdný), záleží a tom, zda daný dotaz správně rozklíčuje a umí ho zoptimalizovat. A hlavně jestli pro tu optimalizaci má prostředky – třeba správné indexy. Takže neřešte „aby to rovnou vyhledávalo od konce databáze“. Jaký je počet záznamů splňujících
x="neco"? Máte na tom x index? Nebo by bylo rychlejší hledat od nejvyšších id a hledat první, které splňuje podmínku na x? Jsou nějaké další podmínky platné pro to vyhledávání x? Třeba by se to dalo využít pro to vyhledávání.
Nebo by bylo rychlejší hledat od nejvyšších id a hledat první, které splňuje podmínku na x?
To by asi bylo idealnim resenim tohoto problemu (viz titulek). Jelikoz ID je nastavene na AUTO_INCREMENT.
Jak tedy hledat od nejvyssich id?
Dekuji
To by asi bylo idealnim resenim tohoto problemu (viz titulek). Jelikoz ID je nastavene na AUTO_INCREMENT. Jak tedy hledat od nejvyssich id?Vytvořit index, ve kterém bude jako první sloupec ID a jako další sloupce to, podle čeho děláte WHERE.
x="něco" bude málo, a že než na takový záznam dojde přes ten index podle ID, bude rychlejší použít buď jiný index (třeba pro samotné x) nebo projít celou tabulku.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.