Autor Zpráva
bahamut
Profil *
Před nedávnem jsem se začal věnovat MySQL a začal jsem přemýšlet nad tím, jaký by mohl být nejvhodnější znakový datový typ pro ukládání jednotlivých příspěvků na diskuzním fóru. Původně jsem si říkal, že by stačilo použít VARCHAR s maximální velikostí 65535 znaků, ale pak jsem si všimnul typu TEXT, který automaticky ukládá 65535 znaků, jako svojí maximální velikost. Pak si ale říkám, proč rovnou nepoužít MEDIUMTEXT s veliostí (2^24)-1 znaků nebo LONGTEXT, s velikostí (2^32)-1 znaků a rozdíl by mezi těmito dvěma byl v tom, že MEDIUMTEXT by k samotnému textu ukládal 3 bajty navíc pro délku uloženého řetěze a LONGTEXT 4 bajty. Dostačující by tedy mohl být ten VARCHAR nebo TEXT, ale nejvhodnější se mi zdá ten MEDIUMTEXT, protože více, než 16 a půl miliónu bajtů pro uložení příspěvku snad nikdy potřeba není a ty 3 bajty navíc, i kdyby na tom foru bylo třeba 100 000 příspěvků snad vadit nebudou. Jak byste to udělali vy?
Alphard
Profil
Varchar byl původně do 255, tím se odlišoval, byl skutečně na krátké poznámky. Já bych na příspěvek omezil velikost, ty moc dlouhé obsahují stejně jen neužitečný nakopírovaný balast. Tady na diskusi obvykle když se někdo neobtěžuje identifikovat problém a kopíruje sem stovky řádků nerelevantního kódu. Uvažovat o longtext pro diskusní příspěvek se mi zdá zcela mimo.
Joker
Profil
bahamut:
To podstatné věc je, jak dlouhé ty příspěvky vůbec mohou být. Vcelku nevidím důvod pro to, aby příspěvek mohl obsahovat třeba několik megabajtů textu.
Tahle diskuse má limit 10 000 a narážejí na to prakticky jen různé speciální příspěvky jako FAQ. A pak lidi co sem zkopírují celý zdroják své stránky, ale to je spíš přínos, že se tohle blokuje.

Čili já osobně bych jako optimální limit délky příspěvku viděl někde v řádu jednotek tisíc znaků.

A ještě jedna poznámka, maximální celková velikost všech sloupců v tabulce je 64kB, takže VARCHAR(66535) sice asi možný je (nevím, jak se počítají ty 2 bajty navíc), ale taková tabulka by už nemohla obsahovat žádný další sloupec.
Právě proto existuje ten typ TEXT (a pro binární data BLOB), jejichž obsah se do toho limitu nezapočítává (počítá se jen pevná hodnota několika bajtů za každý takový sloupec).

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