تعیین index برای column ها

پرسیده شده
فعالیت 1507 روز پیش
دیده شده 1046 بار
0

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

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

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

 

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

فایل پیوست

amir tavakolian
amir tavakolian

29 اسفند 98

5

مورد تایید استاد

حذف شده

سلام.

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

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

 

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

 

جواب شما:

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

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

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

 

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

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

 

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

فایل پیوست

محسن موحد

توسط

محسن موحد

1 فروردین 99