Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Apakah lebih efisien untuk memisahkan data terkait besar dan kecil dalam kolom tabel SQL?

VARCHAR disimpan sejajar dengan tabel. VARCHAR lebih cepat jika ukurannya masuk akal, pengorbanannya akan lebih cepat tergantung pada data dan perangkat keras Anda, Anda ingin membandingkan skenario dunia nyata dengan data Anda.

Jumlah maksimum byte efektif yang dapat disimpan dalam VARCHAR atau VARBINARY kolom tunduk pada ukuran baris maksimum 65,535 bytes , yang dibagikan di antara semua kolom.

Misalnya, VARCHAR(255) kolom dapat menampung string dengan panjang maksimum 255 karakter. Dengan asumsi bahwa kolom menggunakan set karakter latin1 (satu byte per karakter), penyimpanan aktual yang diperlukan adalah panjang string (L), ditambah satu byte untuk merekam panjang string. Untuk string 'abcd' , L adalah 4 dan kebutuhan penyimpanan adalah lima byte. Jika kolom yang sama malah dideklarasikan menggunakan ucs2 set karakter byte ganda, persyaratan penyimpanan adalah 10 byte:Panjang 'abcd' adalah delapan byte dan kolom memerlukan dua byte untuk menyimpan panjang karena panjang maksimum lebih besar dari 255 (hingga 510 bytes ).

Untuk data yang lebih besar, pertimbangkan untuk menggunakan TEXT atau BLOB . TEXT dan BLOB kolom diimplementasikan secara berbeda di NDB mesin penyimpanan, di mana setiap baris dalam TEXT kolom terdiri dari dua bagian yang terpisah. Salah satunya dengan ukuran tetap (256 bytes) , dan sebenarnya disimpan di tabel asli. Yang lain terdiri dari data apa pun yang melebihi 256 bytes , yang disimpan dalam tabel tersembunyi. Baris dalam tabel kedua ini selalu 2,000 bytes panjang. Ini berarti bahwa ukuran TEXT kolomnya adalah 256 jika size <= 256 (di mana ukuran mewakili ukuran baris); jika tidak, ukurannya adalah 256 + size + (2000 – (size – 256) % 2000) .

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

Tergantung pada relasi database Anda, jika Anda jarang menggunakan bidang itu dalam kueri. Misalnya untuk info tambahan. Buat tabel terpisah adalah pilihan yang baik (normalisasi).

CATATAN : VARCHAR berbeda dengan CHAR . Jika Anda membuat VARCHAR(250) dan masukkan hanya 20 karakter di atasnya maka dibutuhkan 5 bytes + L beda dengan CHAR(250) , dibutuhkan 250 bytes + L untuk kondisi yang sama.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menemukan celah dalam penomoran berurutan di mysql?

  2. Lampirkan ke klien MySQL sepenuhnya melalui FIFO

  3. Apa hal terbaik berikutnya setelah VARCHAR(255)

  4. Kode Kesalahan MySQL:1193. Variabel sistem tidak dikenal

  5. Masukkan objek string biner python di gumpalan MySQL