قواعد بيانات:هل الحقول "TEXT" أقل كفاءة من "varchar"؟

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

  •  03-07-2019
  •  | 
  •  

سؤال

هل استخدام TEXT أقل كفاءة من استخدام varchar في قاعدة بيانات SQL؟

إذا كان الأمر كذلك لماذا؟

إذا لم يكن الأمر كذلك، فلماذا لا تستخدم النص دائمًا؟

أنا لا أستهدف قاعدة بيانات محددة هنا، ولكن ربما تكون Oracle هي الأكثر صلة بالموضوع، على الرغم من أنني أقوم باختبار MySQL في الوقت الحالي كجزء من إثبات المفهوم.

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

المحلول

من مايكروسوفت هنا

سيتم إزالة أنواع بيانات NTEXT والنص والصور في إصدار مستقبلي من Microsoft SQL Server.تجنب استخدام أنواع البيانات هذه في أعمال التطوير الجديدة ، والتخطيط لتعديل التطبيقات التي تستخدمها حاليًا.استخدم Nvarchar (Max) و Varchar (Max) و Varbinary (Max) بدلاً من ذلك.

عندما تستخدم varchar(max) عبر النص يمكنك استخدامه في WHERE الشرط، لأنهم يعملون نفس عمل نظرائهم الأصغر، varchar,nvarchar and varbinary.فيما يلي قائمة صغيرة بما يجب استخدامه بدلاً من ما يجب استخدامه:

  • استخدم varchar(max) بدلاً من النص
  • استخدم nvarchar(max) بدلاً من ntext
  • استخدم varbinary(max) بدلاً من الصورة

نصائح أخرى

الوثائق كيو يقول :

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

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

والجواب القصير هو: نعم، هم أقل كفاءة

.

وو، إجابة أكثر الملتوية أطول هي:

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

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

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

وربما يكون هناك فهرسة والاستعلام عن الآثار أيضا، ولكن مرة أخرى أنه سيعتمد على RDBMS معين الذي تستخدمه.

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