سؤال

لقد ورثت مشروع موقع الويب ASP.NET يدير حاليا SQL Server 2000 كخلفية.

لقد قمت بقيام بعض قواعد البيانات بتغييرات على نسخة محلية من DB باستخدام SQL Server 2005 Express. لقد قمت بإنشاء جدول باستخدام varchar(max) أعمدة. يتم استخدامها لتخزين مقتطفات XHTML ذات الطول التعسفي.

أثناء التصفح حول Stackoverflow جئت عبر هذا:هل هناك أي عيوب تستخدم دائما nvarchar (ماكس)؟

يقول المستخدم Mattruma إنه اكتشف "الطريقة الصعبة" حول استخدام varchar(max) على SQL Server 2000.

ماذا يجب أن تستخدم بدلا من varchar(max) نظرا لأن قاعدة البيانات المباشرة تعمل على SQL Server 2000؟

شكرا مقدما على أي مساعدة!

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

المحلول

يبدو وكأنه varchar(MAX) القيود هي نقطة عرض إذا كان لديك DB Live DB هو SQL Server 2000، والذي لا يدعمها. إذا كان لديك أكثر من 8K أحرف لتخزينك، فأنت تركت كثيرا مع الخيار الآخر الوحيد، TEXT عمودي. ومع ذلك، احذر ذلك TEXT الأعمدة لديها الكثير من القيود أيضا.

على سبيل المثال، لا يمكنك فرزها أو المجموعة عليها بسهولة، ولا يمكنك مقارنتها من أجل مكافأة مع أعمدة أخرى. هذا لا يمكنك القول Select * from mytable where Mytext1 = mytext2.

المخاوف الأخرى ذات الصلة:

  • أود أن أقترح باستخدام NText أو NVarchar عمود بغض النظر عن الطريقة التي تذهب إليها لدعم Unicode.
  • إذا كان الجدول لديه الكثير من الأعمدة الأخرى و varchar(8000) من المرجح أن يكون العمود قريبا تماما من الكامل، فقد تواجه مشكلات مع حد الصف 8K. إبقاء هذا في الاعتبار أيضا.

نصائح أخرى

VARCHAR(Max) تم تقديمه في SQL Server 2005، ولن يعمل على SQL Server 2000. تحتاج إلى استخدام إما VARCHAR(8000) على افتراض أن سيكون كبيرا بما فيه الكفاية. خلاف ذلك سوف تحتاج إلى استخدام TEXT

يحرر

أيضا إذا قمت بالتبديل إلى VARCHAR(8000) ضع في اعتبارك أن هناك حد لا يمكن أن يكون صف واحد أكثر من 8060 بايت. لذلك إذا قمت بملء varchar(8000) طاولة ولديك مجموعة من الأعمدة الكبيرة الأخرى التي ستحصل عليها. هذا هو المكان Text ادخل.

Text له تأثيرات الأداء لأنه افتراضي يتم تخزينه في موقع منفصل، والحفاظ على مؤشر في جدول. يوجد خيار محدد يغير هذا السلوك بحيث يتم الاحتفاظ بأنواع النصوص في الجدول حتى تصل إلى حجم معين. إذا كان لديك النقطات الصغيرة في الغالب، فقد ترغب في تمكين هذا.

استخدم عمود نص.

هذا يعتمد على احتياجاتك. يمكنك استخدام عمود نص بدلا من Varchar (بحد أقصى) ولكن عليك أن تتأكد من أن تنفيذك لا يحتاج إلى البحث في هذا الحقل، لأنه لا يمكنك القيام بمقارنات على حقول النص و NTEXT.

إذا كنت تستطيع الحد من نفسك إلى 8000 حرفا، فسأي استخدام عمود Varchar (8000) لتخزين المعلومات.

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