Autor Zpráva
Mario92
Profil
Zdravím.Řeším problém s MySql a protože nejsem příjiž zkušený tak nevím.
Z hlediska rychlosti je lepší použít VARCHAR(500) nebo TEXT.
Říkám si jestli takovýhle VARCHAR není už trochu prasárná.. :D
Joker
Profil
Já bych řekl, že to je skoro jedno, až na pár rozdílů (které někdy mohou být důležité):
• Kdyby bylo potřeba být kompatibilní se starými verzemi MySQL (před MySQL 5), tak tam je maximální délka VARCHAR 255.
• Řádek jako celek má maximální velikost 65535 bajtů. VARCHAR s UTF-8 z toho ubere (délka * 3 = 1500 v tomto případě), typ TEXT jen pevný počet bajtů (myslím že 10), nehledě na délku obsahu. Čili mnoho VARCHAR sloupců s velkou délkou může být problém, ale s délkou 500 by to musely být desítky.
• TEXT nemůže mít DEFAULT hodnotu.
…nic dalšího mě nenapadá.
Mario92
Profil
Na začátku bude obsah každé buňky cca 5 znaků ,ale postupem času se to může rozrůst až k těm 500 znakům.
V tomto případě se jeví jako lepší řešení asi VARCHAR že?
Kajman
Profil
Mario92:

U varcharu můžete použít délku 500 (256-65535) až od verze mysql 5.0.3. Pokud je možné, že systém poběží i na starších verzích, použijte text.

Na začátku bude obsah každé buňky cca 5 znaků, ale postupem času se to může rozrůst až k těm 500 znaků

Jen doufám, že tam nebudete přidávat nějaká data oddělená čárkou.
Mario92
Profil
No to ses trefil presně.. nemel bych to dělat?
Kajman
Profil
Jistě že ne.
Mario92
Profil
Jediné jiné řešení než tohle , které mě napadá je udělat tabulku softlinků ,odkazů kde by každý záznam říkal jen to který záznam se tyká záznamu z jine dálsi tabulky.
Kajman
Profil
Ano, nová vazební tabulka bude nejen z hlediska rychlosti to nejlepší řešení.
Mario92
Profil
Jestli je to rychlejší tak není co řešit.Díky za pomoc.


Kajman:
A ještě bych se zeptal jestli má smysl v té vazební tabulce zavádět sloupec který ty vazby bude číslovat.. jestli se mi to k něčemu můze hodit.Nebo jestli primární klíč zvyšuje rychlost prohlédávání.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0