Ahoj,
pokud mám v databázi pouze hodnoty 0, 1 v daném sloupci a optimalizuji na rychlost, co je lepší?
varchar(1) anebo enum(0,1) ?
Co je rychlejší? Samozřejmě s indexem.
Díky.
Varchar rozhodně ne. ENUM a INT(1) bude imho stejně rychlé, respektive ENUM o maličkej drobek pomalejší. Enum se ukládá jako integer, takže něco malinko času zabere přeložit enum do integeru - nicméně pokud se nebude provozovat milióny dotazů s mizivým časem vykonání, tak to nebude poznat.
Sma mysql poskytuje typ boolean, kterej je synonymem pro TINYINT.
jasně, pardon, měl jsem na mysli int, ne varchar.
myslíš, že je lepší než int(1) boolean? resp. rychlejší?
Tinyint sa používa namiesto boolean štandardne. Neviem prečo, ale keď sa to používa štandardne, hádam niekto na svete to vie.
V dokumentácii som kdesi čítal, že pre úspornejší zápis boolean je možné použiť CHAR(0) - NULL namiesto false, prázdny string namiesto true :) zaberie to iba 1 bit. To len tak pre zaujímavosť, je to humus.
BOOLEAN a TINYINT je synonymum to bych neřešil... (Tzn. typ boolean defakto neexistuje, je to pouze alias pro TINYINT).
INT(1) zabere 4 byty, akorát se zobrazuje na jedno desetiný místo, tam jsem to napsal blbě, myslel jsem TINYINT, INT bych nepoužíval.
V každym případě to udělá minimální rozdíly - optimalizoval bych spíš strukturu databáze, aplikační logiku atd....
BIT(1)
Hezkej výkřik. Ale zrovna pomocí bit(1) neušetříš ani místo - pokud těch položek není v záznamu více
http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html
- a hlavně to rozhodně nebude rychlejší, protože narozdíl od tinyint, kde při čtení se prostě přečte byte, tady musí mysql bit "rozbalit".