💻 آخرین فرصت یادگیری برنامه‌نویسی با آفر ویژه قبل از افزایش قیمت در ۱۵ آذر ماه (🎁 به همراه یک هدیه ارزشمند )
۰ ثانیه
۰ دقیقه
۰ ساعت
۱ amir tavakolian
تعیین index برای column ها
محسن موحد حل شده توسط محسن موحد

با سلام و تبریک سال نو به همه دوستان

برای اینکه بخوایم یک column در دیتابیس رو index کنیم استاد گفتند که باید اون column مقدارش unique باشه و تکرار نشده باشه

ولی در قسمتی که عکسش رو الصاق کردم؛ استاد گفتن که کالمن url میشه index بشه در صورتی که ممکنه مقداره url تکرار باشه و دیگه unique نباشه

 

ممنون میشم اگه راهنمایی کنید.

سلام.

وقتی شما میخواید جدولتون رو براساس یک فیلد خاص مرتب کنید، اون فیلد رو index میکنید.

نکته: مرتب سازی(ایندکس گذاری) رو فقط برای بالا بردن سرعت select انجام میدهید.

 

حالا یه وقت هست، یک فیلدی دارید که میخواهید یونیک باشه. برای اینکار میاید از constraint key یونیک استفاده میکنید. این قید علاوه بر اینکه از درج داده‌های تکراری جلوگیری میکنه، خودش یک index هم هست.

 

جواب شما:

unique key(یا unique index) هم ایندکس هست، هم قیدی برای داده‌های تکراری.

یا مثلا فیلد primary key، علاوه بر اینکه یک ایندکس هست، قیدهای دیگه مثل یونیک و not null بودن رو هم داراست.

بنابراین اگر شما روی فیلدی نمیخواستید قیدی بگذارید (و همچنین روی اون فیلد select زیادی میزنید در پروژه) از ایندکس استفاده میکنید در غیر اینصورت از قید استفاده میکنید که خاصیت ایندکس رو هم داراست. پس اگر خواستید ستونی رو ایندکس کنید، بایدی وجود نداره که اون ستون رو یونیک کنید.(تو جلسه تدریس هم بایدی نیومده) زمانی یونیک رو استفاده میکنید که برای پروژه، وجود قید یونیک الزامیست.

 

درضمن ایندکس گذاری روی پرفورمنس دیتابیس تأثیر مستقیم داره و همچنین روی عملیات اینسرت و آپدیت سربار اضافی داره. علتش اینه وقتی شما ایندکس یا قیدی روی یک فیلد میگذارید، برای هر فیلد یک درخت مرتب شده BTREE رسم میشه. حالا فرض کنید شما ۵ تا فیلد رو ایندکس کردید، در نتیجه ۵ درخت دارید، جدای ازینکه سایز دیتابیستون بالا میره، زمان اینسرت و آپدیت جداول، این درخت‌ها هم یکی یکی باید آپدیت بشن که زمانبر هست.

بنابراین جایی که لازمه ایندکس گذاری انجام بشه.

 

این مقاله رو بد نیست نگاه بندازید.

بهترین پاسخ
محسن موحد ۰۱ فروردین ۱۳۹۹، ۰۰:۲۵