لكل مستندات MySQL ، هناك أربعة أنواع نصية:
ما هو الحد الأقصى للطول الذي يمكنني تخزينه في عمود من كل نوع بيانات على افتراض أن ترميز الأحرف هو UTF-8؟
من الوثائق :
النوع | الحد الأقصى للطول ----------- + ------------------------------- ------ TINYTEXT | 255 (2 8−1) بايت النص | 65.535 (216−1) بايت = 64 كيلوبايت MEDIUMTEXT | 1677715 (224−1) بايت = 16 ميجابايت LONGTEXT | 4،294،967،295 (232−1) بايت = 4 غيغابايت
لاحظ أن عدد الأحرف التي يمكن تخزينها في العمود الخاص بك سوف يعتمد على ترميز الأحرف .
توسيع الجواب نفسه
هذا IS تقدير صارم لجداول سريعة!
س-س
Type | A= worst case (x/3) | B = best case (x) | words estimate (A/4.5) - (B/4.5)
-----------+---------------------------------------------------------------------------
TINYTEXT | 85 | 255 | 18 - 56
TEXT | 21845 | 65,535 | 4854.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
يرجى الرجوع إلى إجابة Chris V أيضًا: https://stackoverflow.com/a/35785869/1881812
بالارتقاء إلى مستوى @ Ankan-Zerob ، يمثل هذا تقديري للطول الأقصى الذي يمكن تخزينه في كل نوع من أنواع النص يقاس بالكلمات :
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
في اللغة الإنجليزية ، ربما يكون 4.8 أحرف لكل كلمة متوسطًا جيدًا (على سبيل المثال norvig.com/mayzner.html ) ، على الرغم من أن أطوال الكلمات ستختلف وفقًا للمجال (مثل اللغة المحكية والأوراق الأكاديمية) ، لذلك ليس هناك نقطة يجري دقيقة للغاية. تكون اللغة الإنجليزية في الغالب أحادية البايت ASCII حرفًا ، بأحرف متعددة البايت في بعض الأحيان ، قريبة جدًا من بايت واحد لكل حرف. يجب السماح بحرف إضافي لمسافات inter-Word ، لذلك قمت بالتنقيط لأسفل من 5.8 بايت لكل كلمة. اللغات التي تحتوي على الكثير من لهجات مثل say البولندية ستخزن كلمات أقل قليلاً ، مثل: الألمانية مع الكلمات أطول.
تتطلب اللغات التي تتطلب multi-byte أحرف مثل اليونانية والعربية والعبرية والهندية والتايلاندية وغيرها ، عادةً وحدتي بايت لكل حرف في UTF-8. تخمين بعنف في 5 أحرف لكل كلمة ، لقد تقريب من 11 بايت لكل كلمة.
مخطوطات CJK (هانزي ، كانجي ، هيراغانا ، كاتاكانا ، إلخ) لا أعرف شيئًا ؛ أعتقد أن الأحرف تتطلب غالبًا 3 بايتات في UTF-8 ، و (مع تبسيط هائل) يمكن اعتبارها تستخدم حوالي 2 حرفًا لكل كلمة ، لذلك ستكون في مكان ما بين الاثنين الأخريين. (من المحتمل أن تتطلب البرامج النصية CJK مساحة تخزينية أقل باستخدام UTF-16 ، وفقًا).
هذا بالطبع يتجاهل النفقات العامة للتخزين وما إلى ذلك.
هذا جميل لكن لا يجيب على السؤال:
"يجب دائمًا استخدام VARCHAR بدلاً من TINYTEXT." Tinytext مفيد إذا كان لديك صفوف واسعة - حيث يتم تخزين البيانات خارج السجل. يوجد حمل أداء ، لكن له استخدام.