![]() |
![]() |
![]()
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) ? |
|
|
![]() |
![]()
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...
|
|
|
![]()
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?
|
|
|
![]()
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. ![]() 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...
|
|
|
![]()
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ć ?
![]() |
|
|
![]()
Post
#6
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
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ć ? ![]() 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. |
|
|
![]()
Post
#7
|
|
![]() Grupa: Moderatorzy Postów: 6 072 Pomógł: 861 Dołączył: 10.12.2003 Skąd: Dąbrowa Górnicza ![]() |
|
|
|
![]()
Post
#8
|
|
![]() Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
![]() Tu masz racje ![]() |
|
|
![]() ![]() |
![]() |
Aktualny czas: 21.08.2025 - 15:36 |