2012-04-06 13 views
10

Dlaczego tak wielu programistów ustawia varchar na 254, a nie 255 podczas tworzenia tabel MySQL?MySQL: dlaczego varchar (254), a nie varchar (255)?

Dowód, że tak się dzieje: mysql varchar 254

+1

Może niektórzy boją się naprawdę do końca! Życie na krawędzi! :) –

+0

@Jason_vorhees: Widziałem również varchar (254) i zastanawiałem się, jaki był proces decyzyjny. Zapisuję to jako "nie było żadnego, jest to arbitralna głupota/niedbalstwo", ale jestem otwarty na bycie niewłaściwym. Zainteresowany usłyszeć odpowiedź na to. – tenfour

+0

Nie jestem z tych programistów –

Odpowiedz

6

pola varchar wymaga n + 1 bajtów pola mniejsza niż lub równa 255 Wymagana n + 2 bajtów pola> 255

http://dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

ramę powinno być ustawione na 255, zakładam, że deweloperzy sądzą, że zaoszczędzą dodatkowy bajt od 254, ale 255 jest standardowym

+1

Zgadzam się, mówię, że 255 ma rację, a nie 254. To nie ma naprawdę znaczenia zbyt wiele teraz. Kiedy pojawił się pierwszy album, a miejsce na dysku twardym było bardzo ograniczone, byłby to duży problem. – Keith

+0

Połowa prawda: zależy to od silnika pamięci masowej. To prawda, że ​​MyIsam, nie tyle dla InnoDB, nie zna się na pamięć innych silników. – Konerak

12

Twoje zapytanie Google już dawało ci wskazówki. Jednym z pierwszych hitów to:

https://www.vbulletin.com/forum/project.php?issueid=32655

zasadzie mówi się, że FULLTEXT indeksy VARCHAR(255) wymagają dwukrotnie przestrzeń indeksu VARCHAR(254) FULLTEXT. I jeszcze kilka innych nadęść.

Myślę, że jest to o wiele ważniejsze niż zapisanie jednego bajtu w tabeli danych.

+0

gud odpowiedź, wreszcie poznałem jej znaczenie, thanx za udostępnienie go. –

+0

Pamiętaj, że to NIE wystarcza, aby użyć 254 varchar zamiast 255 varchar. Możesz po prostu utworzyć indeks, który będzie zawierał 254 znaki zamiast 255 - w ten sposób twoja kolumna będzie zawierała wszystkie potrzebne dane, a indeks nie zostanie nadęty. Ponadto, ten "błąd" powinien zostać zgłoszony zespołowi serwera MySQL, aby mógł zbadać i naprawić lub wyjaśnić zamieszanie. Zrzuty ekranu "phpMyAdmin" w tym postu na vbulletin nie dają mi pewności ... – Konerak

+0

@Konerak Możesz sam przeprowadzić kilka eksperymentów i zgłoś wyniki. Jednakże: nawet gdyby to "zachowanie" (czy to błąd, czy nie) zostało naprawione _nerw_, zwyczaj używania limitu 254 pozostanie na zawsze przez długi czas. Ludzie są w ten sposób. –