Portál AbcLinuxu, 14. května 2025 04:18
Ř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.