Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [myslq] TEXT a VARCHAR - czy dobrze rozumiem, że ....?, po co VARCHAR?
konrados
post
Post #1





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

Ostrzeżenie: (0%)
-----


Witam,

Czy dobrze rozumiem, że jeśli w mojej bazie mam pole VARCHAR o długości 200, to nawet jak dodam puste dane, to dany row i tak zajmie mi te 200 bajtów długości? Czyli 10 rows, gdzie są różne pola i dane, ale akurat to pole VARCHAR jest puste lub dodałem tam tylko parę bajtów, zajmie mi 2 KB na dysku na serwerze?

Jeśli tak jest to po co to w ogóle używać, nie lepiej używać TEXT bez określania długośći? Czy może chodzi o szybkość wydobywania danych? Jak rozumiem, puste dane typu TEXT zajmą co najwyżej 1 bajt (NULL) ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 7)
Grzyw
post
Post #2





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Nie, pole VARCHAR na szczęście "działa" inaczej.
Zajmuje w bazie długość stringa + 1 bajt.
Czyli "pupa" zajmie 5 bajtów, "cokolwiek" zajmie 10 bajtów.
Varchar nie sprawdza się, gdy jest ustalona liczba znaków. Wówczas stosuje się typ char.
Dlatego, że wówczas każde pole zajmuje o 1 bajt więcej.
Ten jeden bajt jest potrzebny bazie na oznaczenie końca "wpisu"


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
konrados
post
Post #3





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

Ostrzeżenie: (0%)
-----


Dzięki! Ale w takim razie czym się różni VARCHAR od TEXT?
Go to the top of the page
+Quote Post
Grzyw
post
Post #4





Grupa: Zarejestrowani
Postów: 561
Pomógł: 75
Dołączył: 19.08.2004
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


http://forum.php.pl/index.php?showtopic=7520

Idąc na skróty. smile.gif

Jeżeli dobrze kojarzę, VARCHAR przyjmuje max. 255 znaków. TEXT tego ograniczenia nie ma.

Ten post edytował Grzyw 29.01.2008, 13:41:11


--------------------
Idąc po czyichś śladach, nie zajdziesz ani kroku dalej...
Go to the top of the page
+Quote Post
konrados
post
Post #5





Grupa: Zarejestrowani
Postów: 623
Pomógł: 79
Dołączył: 16.01.2008

Ostrzeżenie: (0%)
-----


Dzięki. Prócz tego znalazłem jeszcze http://forums.mysql.com/read.php?20,75451 i wychodzi na to, że najlepiej używać TEXT. Usuwanie spacji w VARCHAR na początku i końcu mnie trochę zaskoczyło, ten mysql nie ma co robić ? smile.gif
Go to the top of the page
+Quote Post
webdice
post
Post #6


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(konrados @ 29.01.2008, 13:42:26 ) *
Dzięki. Prócz tego znalazłem jeszcze http://forums.mysql.com/read.php?20,75451 i wychodzi na to, że najlepiej używać TEXT. Usuwanie spacji w VARCHAR na początku i końcu mnie trochę zaskoczyło, ten mysql nie ma co robić ? smile.gif


Właśnie nie, jeśli wiesz że pole będzie zajmować np 40 znaków (przypuśćmy hash sha1) to używaj varchar (40) a nie text. To samo jeśli masz w polu imie, nazwisko, e-mial to też nie używa się pola text, tylko varchar bo te dane mają jakieś ograniczenia. Chodzi o optymalizacje bazy.
Go to the top of the page
+Quote Post
phpion
post
Post #7





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Cytat(webdicepl @ 29.01.2008, 15:50:43 ) *
jeśli wiesz że pole będzie zajmować np 40 znaków (przypuśćmy hash sha1) to używaj varchar (40) a nie text

sekret.gif tu bym się nie zgodził. Jeśli długość tekstu jest stała to lepiej używać pola o stałej długości czyli char(40).
Go to the top of the page
+Quote Post
webdice
post
Post #8


Developer


Grupa: Moderatorzy
Postów: 3 045
Pomógł: 290
Dołączył: 20.01.2007




Cytat(phpion @ 29.01.2008, 14:16:56 ) *
sekret.gif tu bym się nie zgodził. Jeśli długość tekstu jest stała to lepiej używać pola o stałej długości czyli char(40).


Tu masz racje smile.gif. Dodam że char zajmuje zawsze tyle miejsca ile zadeklarowaliśmy, a varchar tyle ile jest konieczne do zapisania tekstu, może autorowi się przyda.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 21.08.2025 - 15:36