تفاوت TEXT و VARCHAR در طراحی بانک اطلاعاتی چرا مهم است؟
جلوتر که این دو نوع داده را تعریف کنم و با ویژگی های آن آشنا شوید متوجه خواهید شد که انتخاب درست نوع داده در طراحی بانک اطلاعاتی بسیار مهم است و میتواند موجب افزایش سرعت بانک اطلاعاتی شود.
بله افزایش سرعت دیتابیس به نوع داده نیز ارتباط دارد؛ چون دادهها با ساختار مختلف ذخیره میشوند. اصلا علت اصلی دانستن تفاوت TEXT و VARCHAR همین است.
یکی از تغییرات MySQL نسخه 5.0.3 شامل افزایش حداکثر طول فیلدهای VARCHAR از 255 به 65535 کاراکتر بود. این باعث شد تایپ VARCHAR بیش از هر زمان دیگری به TEXT شبیه باشد. برای کسانی از ما که جداول پایگاه داده طراحی می کنیم، انتخاب بین VARCHAR و TEXT اکنون در نتیجه چالش برانگیزتر شده است. در این مقاله تفاوتهای کلیدی بین این دو را شرح میدهیم و عواملی را که باید در هنگام تصمیمگیری برای انتخاب نوع داده در نظر بگیرید، بیان میکنیم.
آشنایی با VARCHAR در MySQL
در بررسی تفاوت TEXT و VARCHAR ابتدا میخواهم نوع داده VARCHAR را برای شما تعریف کنم:
نوع داده Varchar در بانک اطلاعاتی MySQL برای ذخیره و نمایش رشتههای متغیر با طول مشخص استفاده میشود. Varchar برای ذخیره کردن رشتههایی با طول متغیر تا حداکثر تعیین شده میتواند مورد استفاده قرار بگیرد.
به طور معمول، نوع داده Varchar به صورت زیر تعریف میشود:
VARCHAR(length)
در اینجا، length بیانگر طول حداکثر رشته است که میتواند در این ستون ذخیره شود. مقدار length باید بین 1 تا 65535 باشد.
مزیت استفاده از Varchar در برابر Char این است که Varchar فقط فضایی برای ذخیره کردن کاراکترهای واقعی استفاده میکند، در حالی که Char همیشه فضای مشخص را مصرف میکند. به عبارت دیگر، اگر طول مورد استفاده در یک ستون Varchar کوچکتر از حداکثر طول تعیین شده باشد، فضای اضافی توسط آن اشغال نمیشود.
برای مثال، اگر بخواهید یک ستون برای ذخیره نام کاربران با حداکثر 50 کاراکتر داشته باشید، میتوانید از نوع داده Varchar(50) استفاده کنید. اگر طول نام کاربران کمتر از 50 باشد، فضای اضافی توسط این ستون اشغال نمیشود.
بهتر است تا وقتی که میتوانید، از Varchar استفاده کنید و فقط در مواردی که طول ایستا و متغیری مشخص دارید (مانند کدهای استاندارد، شماره تلفن و غیره) از Char استفاده کنید.
آشنایی با نوع داده TEXT در MySQL
در ادامه بررسی تفاوت TEXT و VARCHAR ابتدا میخواهم نوع داده TEXT را برای شما تعریف کنم:
نوع داده TEXT در بانک اطلاعاتی MySQL، یک نوع داده است که برای ذخیره سازی متن طولانی بکار میرود. مقادیر TEXT میتوانند شامل یک مجموعه از کاراکترها با طول دلخواه باشند. این نوع داده معمولا برای ذخیره سازی متنهایی مانند مقالات، توضیحات، نظرات و غیره استفاده میشود.
مقدار متنی را میتوان در یک ستون با نوع داده TEXT ذخیره کرد و به آن عملیاتهایی همچون جستجو، فیلتر کردن و مرتب سازی را بروی آن انجام داد. TEXT در MySQL به صورت چندین نوع متفاوت نیز وجود دارد که شامل TEXT، TINYTEXT، MEDIUMTEXT و LONGTEXT است. هر یک از این نوعها دارای محدودیتهای مختلف برای تعداد حروف قابل ذخیره سازی هستند.
بررسی چند تفاوت TEXT و VARCHAR
همیشه موقع طراحی جداول بانک اطلاعاتی MySQL این سئوال ایجاد میشود که تفاوت TEXT و VARCHAR چیست؟ در بخش از مقاله 4 تفاوت مهم TEXT و VARCHAR را برای شما شرح خواهیم داد.
در حالی که هر دو نوع داده حداکثر طول 65535 کاراکتر مشترک دارند، هنوز چند تفاوت وجود دارد:
◄ VAR در VARCHAR به این معنی است که شما می توانید حداکثر اندازه را بین 1 تا 65535 تنظیم کنید. فیلدهای TEXT حداکثر اندازه ثابت 65535 کاراکتر دارند.
◄ یک فیلد VARCHAR میتواند بخشی از یک شاخص باشد در حالی که یک فیلد TEXT از شما میخواهد که طول پیشوندی را مشخص کنید که میتواند بخشی از یک شاخص باشد.
◄ VARCHAR به صورت مستقیم با جدول ذخیره می شود (حداقل برای موتور ذخیره سازی MyISAM) که باعث می شود در صورت معقول بودن اندازه، سریعتر شود. البته سرعت بیشتر هم به داده ها و هم به سخت افزار شما بستگی دارد. در همین حال، TEXT خارج از جدول با جدول دارای اشاره گر به محل ذخیره واقعی ذخیره می شود.
◄ استفاده از یک ستون TEXT در مرتب سازی به استفاده از یک جدول موقت مبتنی بر دیسک، به عنوان موتور ذخیره سازی MEMORY (HEAP) نیاز دارد.
انواع TEXT
اگر به نوع TEXT نیاز دارید، بدانید که در واقع سه نوع وجود دارد. علاوه بر TEXT، انواع MEDIUMTEXT یا LONGTEXT نیز وجود دارد. دو مورد آخر برای ذخیره محتوای متنی با بیش از 65535 کاراکتر هستند. MEDIUMTEXT رشته ها را تا 16 مگابایت و LONGTEXT تا 4 گیگابایت را ذخیره می کند! ناگفته نماند که باید از استفاده از این انواع بزرگتر خودداری کنید مگر اینکه فضای ذخیره سازی زیادی داشته باشید.
امیدوارم تفاوت TEXT و VARCHAR را به خوبی متوجه شده باشید و بتوانید در طراحی جدول بانک اطلاعاتی MySQL نوع داده مناسب را استفاده کنید تا در بهینه سازی دیتابیس موفق باشید.
منبع:
○ تجربیات شخصی
○ نویکت
آموزش برنامه نویسی php – آموزش php ویژه توسعه وردپرس
با آموزش php و برنامه نویسی php ویژه توسعه وردپرس از طراحان سایت آماتور متمایز شوید و بتوانید مشکل سایت را خودتان پیدا و حل کنید و یا اینکه قالب و افزونه را برای خودتان سفارشی سازی کنید. در این دوره از الگوریتم تا برنامه نویسی php و دیتابیس MySQL و خواندن کد افزونه با هم قدم به قدم پیش میرویم…