Właśnie przeczytałem zaakceptowaną odpowiedź this question, która pozostawiła mi to pytanie.Czy jest jakiś sens używania CHAR, jeśli masz VARCHAR w tej samej tabeli?
Oto cytat z tej odpowiedzi:
„Ale ponieważ określili to pytanie z MySQL, będę wspomnieć MySQL specyficzne wskazówka: gdy zapytanie niejawnie generuje tabelę tymczasową, na przykład podczas sortowania lub GROUP BY
, VARCHAR
pola są konwertowane na CHAR
, aby uzyskać korzyści z pracy z wierszami o stałej szerokości.Jeśli używasz wielu pól VARCHAR(255)
dla danych, które nie muszą być tak długie, może to spowodować, że tabela tymczasowa będzie bardzo duża. "
Jak rozumiem, zaletą CHAR
jest to, że otrzymujesz wiersze o stałej szerokości, więc czy w tym samym stole nie ma problemu z VARCHAR
? Czy są jakieś zalety korzystania z CHAR
, gdy masz VARCHAR
w tej samej tabeli?
Oto przykład:
Tabela z CHAR
:
CREATE TABLE address (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
street VARCHAR(100) NOT NULL,
postcode CHAR(8) NOT NULL,
PRIMARY KEY (id)
);
Tabela bez CHAR
:
CREATE TABLE address (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
street VARCHAR(100) NOT NULL,
postcode VARCHAR(8) NOT NULL,
PRIMARY KEY (id)
);
Czy stół z CHAR
wykonać lepiej niż stole bez CHAR
, a jeśli tak, to w czym sytuacje?
Prawdopodobny duplikat - http://stackoverflow.com/questions/3408930/does-anyone-dostepny-niepieczny-to-char-jest-pasiec-than-varchar – ocodo
Tabela "char" będzie wykorzystywać mniej miejsca, ponieważ nie ma dodatkowego pola dla "długości ciągu kodu pocztowego" w każdym rekordzie. –
@Slomojo: To pytanie dotyczy tego, czy istnieją zalety "CHAR" w ogóle i nie o to proszę. –