Diskuze: LIMIT v databázovém dotazu
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Vlastník
Zobrazeno 9 zpráv z 9.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.
Po provedení prvního UPDATE by asi tabulka neměla být dál prohledávána a teoreticky by se mohlo něco ušetřit. Nepatří to však k dobrým zvykům. U krátkých tabulek je to jedno, u dlouhých by na daném sloupci měl být index a vlastně by to také mělo být jedno.
Díky, myslel jsem si to. Takže když to je primární klíč té samé tabulky nebo třeba cizí klíč, tak to dál prohledávat nebude.
Také jsem se mezitím dočetl, že používání LIMIT v UPDATE je v jistém ohledu hazard, protože pokud by tam těch položek víc, tak vůbec nevíme, která z nich bude updatována.
Mám takové tušení, že LIMIT v UPDATE je jen rozšířením MySQL, které ve standardu není.
Ještě se chci zeptat, když chci zjistit, jestli v DB existuje alespoň jeden záznam, předpokládám, že se to nedělá countem, ale selectnu si něco s limitem 1 a data pak nevyužiji. Je to tak?
já tedy nevím, co myslíš konkrétního, ale jestli se má něco updatovat a jedná se o konkrétní řádek, šel bych rovnou podmínkou ke konkrétnímu ID, bude tak změněn jen jeden záznam. Ale jestli se změna může týkat více řádků, tak je asi dobré změnit všechny řádky, kterých se to týká. A jestliže, se má změnit z více možnosti jen jedna, určitě bych je minimálně seřadil, třeba podle ID. Já používám v tabulkách vždy jako první sloupec s identifikací nastavenou AUTO_INCREMENT. Přijde mi to jako velká pomoc při práci s DB.
Většinou k dotazům tohoto typu není důvod. Buď ta data chci, anebo nechci, ale neptám se zbytečně, zda tam jsou. Z toho smrdí race condition.
count(*) se používá běžně, ale musí se s ním opatrně.
Křišťálová koule se mi ozvala: Proč vlastně nepoužiješ Observer?
Zobrazeno 9 zpráv z 9.