Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Czy bardziej wydajne jest rozdzielanie dużych i małych powiązanych danych w kolumnie tabeli SQL?

VARCHAR jest przechowywany w linii z tabelą. VARCHAR jest szybszy, gdy rozmiar jest rozsądny, którego kompromis byłby szybszy, zależy od twoich danych i sprzętu, chciałbyś porównać scenariusz ze świata rzeczywistego ze swoimi danymi.

Efektywna maksymalna liczba bajtów, które mogą być przechowywane w VARCHAR lub VARBINARY kolumna podlega maksymalnemu rozmiarowi wiersza wynoszącemu 65,535 bytes , który jest wspólny dla wszystkich kolumn.

Na przykład VARCHAR(255) kolumna może zawierać ciąg znaków o maksymalnej długości 255 znaków. Zakładając, że kolumna używa zestawu znaków latin1 (jeden bajt na znak), rzeczywista wymagana pamięć to długość ciągu (L) plus jeden bajt do zarejestrowania długości ciągu. Dla ciągu 'abcd' , L to 4 a wymagana pamięć to pięć bajtów. Jeśli zamiast tego zadeklarowana jest ta sama kolumna do używania ucs2 zestaw znaków dwubajtowych, wymagana pamięć to 10 bajtów:długość „abcd” to osiem bajtów, a kolumna wymaga dwóch bajtów do przechowywania długości, ponieważ maksymalna długość jest większa niż 255 (do 510 bytes ).

W przypadku większych danych rozważ użycie TEXT lub BLOB . TEXT i BLOB kolumny są zaimplementowane inaczej w NDB silnik przechowywania, w którym każdy wiersz w TEXT kolumna składa się z dwóch oddzielnych części. Jeden z nich ma stały rozmiar (256 bytes) i jest faktycznie przechowywany w oryginalnej tabeli. Druga składa się z dowolnych danych przekraczających 256 bytes , który jest przechowywany w ukrytej tabeli. Wiersze w tej drugiej tabeli mają zawsze 2,000 bytes długie. Oznacza to, że rozmiar TEXT kolumna to 256 jeśli size <= 256 (gdzie rozmiar oznacza rozmiar wiersza); w przeciwnym razie rozmiar to 256 + size + (2000 – (size – 256) % 2000) .

http://dev.mysql.com/doc/refman /5.6/pl/magazyn-wymagania.html

Zależy od relacji z bazą danych, jeśli rzadko używasz tych pól w zapytaniu. Na przykład po dodatkowe informacje. Tworzenie oddzielnej tabeli to dobra opcja (normalizacja).

UWAGI: VARCHAR różni się od CHAR . Jeśli utworzysz VARCHAR(250) i wstaw tylko 20 znaków na nim to zajmie 5 bytes + L inny z CHAR(250) , zajmie to 250 bytes + L w tym samym stanie.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wysoka precyzja liczbowa unosi się dzięki MySQL i SQLAlchemy ORM

  2. Jak ręcznie ustawić wartość seeda na 1000 w MySQL?

  3. Wielokrotne usuwanie MySQL. Czy można wielokrotnie usuwać wiersze, do których istnieją odwołania?

  4. MySQL Jak wybrać dane z tabeli, które zarejestrowały się dzisiaj?

  5. Wiersze MySQL SELECT pasujące do tablicy?