MySQL belgeleri başına dört TEXT türü vardır:
- TINYTEXT
- METİN
- MEDIUMTEXT
- LONGTEXT
Karakter kodlamasının UTF-8 olduğunu varsayarak, her veri türünün bir sütununda saklayabileceğim maksimum uzunluk nedir?
MySQL belgeleri başına dört TEXT türü vardır:
Karakter kodlamasının UTF-8 olduğunu varsayarak, her veri türünün bir sütununda saklayabileceğim maksimum uzunluk nedir?
Yanıtlar:
Gönderen belgeler :
Türü | Maksimum uzunluk ----------- + ------------------------------------- TINYTEXT | 255 (2 8 −1) bayt METİN | 65.535 (2 16 −1) bayt = 64 KiB MEDIUMTEXT | 16.777.215 (2 24 −1) bayt = 16 MiB LONGTEXT | 4.294.967.295 (2 32 −1) bayt = 4 GiB
Sütununuzda saklanabilecek karakter sayısının karakter kodlamasına bağlı olacağını unutmayın .
A TEXT column with a maximum length of 255 (28 – 1) characters. The effective maximum length is less if the value contains multi-byte characters.
Daha fazla ayrıntı için Ankan'ın cevabına bakınız.
Aynı cevabın genişlemesi
HIZLI KARARLAR İÇİN KABA TAHMİN TABLOSU!
xx
Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
TINYTEXT | 85 | 255 | 18 - 56
TEXT | 21,845 | 65,535 | 4,854.44 - 14,563.33
MEDIUMTEXT | 5,592,415 | 16,777,215 | 1,242,758.8 - 3,728,270
LONGTEXT | 1,431,655,765 | 4,294,967,295 | 318,145,725.5 - 954,437,176.6
Lütfen Chris V'nin cevabına da bakın: https://stackoverflow.com/a/35785869/1881812
TINYTEXT
, kayıt boyutuna karşı 1 bayt + 8 bayt sayarken, kayıt boyutuna karşı VARCHAR(255)
1 bayt + 255 bayttan 2 bayta + 1020 bayta (4 bayt UTF-8 karakter) kadar sayar.
@ Ankan-Zerob'un meydan okumasına yükselen bu, kelimelerde ölçülen her metin türünde saklanabilecek maksimum uzunluk tahminimdir :
Type | Bytes | English words | Multi-byte words
-----------+---------------+---------------+-----------------
TINYTEXT | 255 | ±44 | ±23
TEXT | 65,535 | ±11,000 | ±5,900
MEDIUMTEXT | 16,777,215 | ±2,800,000 | ±1,500,000
LONGTEXT | 4,294,967,295 | ±740,000,000 | ±380,000,000
In İngilizce , kelime başına 4,8 harfleri iyi bir ortalama (örneğin muhtemelen norvig.com/mayzner.html kelime uzunlukları etki alanına göre (akademik yayınlarda vs gibi konuşulan dili) değişecektir rağmen, bu yüzden çok hassas olmaya gerek yoktur). İngilizce çoğunlukla tek baytlı ASCII karakterleri olup, ara sıra çok baytlı karakterlerle harf başına bir bayta çok yakındır. Sözcüklerarası boşluklar için fazladan bir karaktere izin verilmelidir, bu yüzden sözcük başına 5.8 bayttan aşağı yuvarlandım. Lehçe gibi birçok aksanı olan diller, örneğin daha uzun kelimelerle Almanca gibi, biraz daha az kelime depolayacaktır.
Yunanca, Arapça, İbranice, Hintçe, Tayca, vb. Gibi çok baytlık karakterler gerektiren diller , UTF-8'de karakter başına genellikle iki bayt gerektirir. Kelime başına 5 harf çılgınca tahmin ederek, kelime başına 11 bayttan aşağı yuvarladım.
CJK senaryoları (Hanzi, Kanji, Hiragana, Katakana, vb.) Hiçbir şey bilmiyorum; Karakterlerin UTF-8'de çoğunlukla 3 bayt gerektirdiğine ve (büyük basitleştirmeyle) kelime başına yaklaşık 2 karakter kullandıkları düşünülebilir, bu yüzden diğer ikisi arasında bir yerde olurlar. (CJK komut dosyalarının, bağlı olarak UTF-16 kullanarak daha az depolama gerektirmesi olasıdır).
Bu elbette depolama ek yüklerini vb. Yok saymaktadır.