Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Ahoj, vídám často v dotazech napsáno LIMIT 1, např. v UPDATE, kde programátor ví, že záznam bude max jeden. Je to dobrá praktika a zrychlí to dotazy?

Odpovědět 2.7.2013 12:42
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
chocho
Neregistrovaný
Avatar
chocho:

jednou jsem to udělal tak. že jsem si připojil sloupec a v něm inkrementoval hodnotu(pokud jsem chjtěl např. LIMIT 15) a pak HAVING a měl jsem to, ale nevím jestli to je rychlé.. :/

 
Nahoru Odpovědět 2.7.2013 12:44
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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.

Nahoru Odpovědět 2.7.2013 12:52
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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.

Nahoru Odpovědět  +1 2.7.2013 12:59
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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í.

Nahoru Odpovědět  +1 2.7.2013 13:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

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?

Editováno 2.7.2013 15:14
Nahoru Odpovědět 2.7.2013 15:14
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Hynek
Redaktor
Avatar
David Hynek:

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.

Nahoru Odpovědět  +1 2.7.2013 15:24
Čím víc vím, tím víc věcí nevím.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

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ě.

Nahoru Odpovědět 2.7.2013 17:16
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Křišťálová koule se mi ozvala: Proč vlastně nepoužiješ Observer?

Nahoru Odpovědět 2.7.2013 17:33
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 9 zpráv z 9.