هل هناك سبب وجيه أرى VARCHAR(255) تستخدم في كثير من الأحيان (في مقابل آخر طول)?

StackOverflow https://stackoverflow.com/questions/1217466

سؤال

في دورات متعددة, الكتب, وظائف, لقد رأيت حقول النص بأنها VARCHAR(255) كنوع من الافتراضي "قصير" النص.هل هناك أي سبب وجيه أن طول 255 يتم اختياره في كثير من الأحيان ، عدا كونها رقم جميل?هل هو من الرافضين بعض الوقت في الماضي عندما كان هناك سبب وجيه (ما إذا كان ينطبق اليوم)?

أدرك بالطبع أن تشديد الحد من شأنها أن تكون أكثر مثالية إذا كنت تعرف بطريقة أو بأخرى أقصى طول السلسلة.ولكن إذا كنت تستخدم VARCHAR(255) التي ربما يدل على أنك لا تعرف طول ماكس, إلا أنه هو "قصير" سلسلة.


ملاحظة:لقد وجدت هذا السؤال (varchar(255) v tinyblob v tinytext) الذي يقول أن VARCHAR(n) يتطلب n+1 بايت للتخزين n<=255, n+2 بايت من التخزين n>255.هل هذا هو السبب الوحيد ؟ يبدو أنه نوع من تعسفيا منذ كنت فقط يمكن توفير اثنين بايت مقارنة VARCHAR(256) ، هل يمكن بسهولة مثلما حفظ آخر اثنين بايت بإعلان VARCHAR(253).

هل كانت مفيدة؟

المحلول

وتاريخيا، كان 255 حرفا في كثير من الأحيان الحد الأقصى لطول VARCHAR في بعض DBMSes، وأنه في بعض الأحيان لا يزال يختتم كونها أقصى فعالية إذا كنت تريد استخدام UTF-8 ووفهرسة العمود (بسبب قيود طول رقم قياسي) .

نصائح أخرى

255 يستخدم لأنها أكبر عدد الأحرف التي يمكن عدها مع 8 بت عدد.ذلك يزيد استخدام 8 بت العد ، دون بطيش تتطلب آخر كل بايت عد الأحرف أعلاه 255.

عندما تستخدم هذه الطريقة ، VarChar يستخدم فقط عدد وحدات البايت + 1 لتخزين النص الخاص بك, لذا يمكنك أيضا تعيين إلى 255, إلا إذا كنت تريد الحد الثابت (50) على عدد من الشخصيات في هذا المجال.

وربما لأن كلا SQL Server و سايبيس (على سبيل المثال اثنين وأنا على دراية) كانت لدينا بحد أقصى 255 حرف في عدد الأحرف في عمود VARCHAR. ل SQL Server، هذا تغير في الإصدار 7 في 1996/1997 أو نحو ذلك ... ولكن العادات القديمة لا تموت بسهولة في بعض الأحيان.

وانا ذاهب للإجابة على السؤال الحرفي: على لا ، أو لم يكن هناك سبب وجيه ترى VARCHAR (255) المستخدمة في كثير من الأحيان (هناك في الواقع <م> أسباب ، كما نوقش في إجابات أخرى، ليس فقط الجيدة منها). لن تجد العديد من الأمثلة على المشاريع التي فشلت بشكل كارثي بسبب المعماري اختار VARCHAR (300) بدلا من VARCHAR (255). وستكون هذه قضية شبه كاملة أهميتها حتى إذا كنت تتحدث عن CHAR بدلا من VARCHAR.

وعندما تقول 2^8 تحصل 256، ولكن الأرقام من حيث أجهزة الكمبيوتر يبدأ من 0 العدد. لذلك، ثم حصلت على 255، يمكنك تحقيق ذلك في قناع الانترنت لIP أو في IP نفسه.

و255 هو الحد الأقصى لقيمة عدد صحيح 8 بت: 11111111 = 255

هل تساعد؟

<اقتباس فقرة>   

ملحوظة: لقد وجدت هذا السؤال   (VARCHAR (255) ضد tinytext tinyblob الخامس)،   الذي يقول ان VARCHAR (ن) يتطلب   ن + 1 بايت من التخزين ل n <= 255، ن + 2   بايت من التخزين لن> 255. هذا هو   السبب الوحيد؟ ويبدو نوع من   تعسفي، وبما انك ستكون فقط   إنقاذ اثنين بايت مقارنة   VARCHAR (256)، وكنت قد مثلما   بسهولة انقاذ اثنين بايت آخر من قبل   معلنا أنه VARCHAR (253).

ولا. لم تقم بحفظ اثنين بايت بإعلان 253. هو على الأرجح تنفيذ VARCHAR عداد طول وطول متغير، مجموعة nonterminated. وهذا يعني أنه إذا قمت بتخزين "مرحبا" في VARCHAR (255) سوف تشغل 6 بايت: بايت واحد لطول (عدد 5) و 5 بايت الأحرف الخمسة

ويمكن أن يحتوي رقم 1 بايت غير موقعة النطاق [0-255] شامل. لذا عندما ترى 255، هو في الغالب بسبب المبرمجين يعتقدون في 10 قاعدة (الحصول على نكتة؟):)

في الواقع، لفترة من الوقت، كان 255 أكبر الحجم الذي يمكن أن يعطي VARCHAR في الخلية، وهناك مزايا لاستخدام VARCHAR على TEXT مع الفهرسة وغيرها من القضايا.

في العديد من التطبيقات، مثل MSOFFICE (حتى نسخة 2000 أو 2002)، وكان الحد الأقصى لعدد الأحرف في كل خلية 255. نقل البيانات من برامج قادرة على التعامل مع أكثر من 255 حرفا لكل حقل من / إلى تلك التطبيقات كان كابوسا. حاليا، والحد الأقصى هو أقل وأقل إعاقة.

وهناك سبب آخر قد يكون ذلك في مكتبات الوصول إلى البيانات القديمة جدا على ويندوز مثل RDO وADO (الإصدار COM لا ADO.NET) كان لديك لاستدعاء أسلوب خاص، GetChunk، للحصول على بيانات من عمود مع أكثر من 255 حرف . إذا كنت محدودة عمود varchar إلى 255، وكان هذا الرمز الإضافي يست ضرورية.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top