رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
ایندکس گذاری
#1
سلام
من میخوام یه جامعه مجازی درست کنم.
به خاطر همین در مورد بهینه بودن دیتابیس ها جستجو کردم.
بیشترین تاکیدی که در مطالب بود بر روی نرمال سازی و ایندکس گذاری بود.
در مورد ایندکس گذاری:

به تصویری که براتون میفرستم ی نگا بندازید.
تو این تصویر مگه دیتابیس من ایندکس گذاری نشده.
ایندکس گذاری مگه همون id که مادرست میکنیم نیست.
آیا به غیر از ایندکس عددی ایندکس دیگه ای هم درست میکنن؟

میگفتن دیتابیس اگه ایندکس گذاری بشه خیلی بهتر میشه ولی من دقیقا از ایندکس گذاری که میگن سردر نمیارم.
مرسی


فایل‌های پیوست تصاویر بندانگشتی
   
پاسخ
تشکر شده توسط:
#2
بجز کلید اصلی (همون id) ایندکسهای دیگری هم وجود دارن: INDEX و UNIQUE و FULL TEXT

INDEX فقط عمل ایندکس کردن و تشکیل درخت جستجوی دودویی رو انجام میده که بهتره فقط برای فیلدهای عددی int و نهایتاً متنی varchar با حداکثر طول 255 کارکتر انجام بشه چون درغیر اینصورت جدول ایندکس رو خیلی طولانی میکنه. وقتی فیلدی ایندکس شده باشه، موقع ذخیره کردن، شماره رکورد (در حقیقت آدرس فیزیکی شروع رکورد) توی یک جدول مرتب شده به اسم جدول ایندکس ذخیره میشه. این کار باعث میشه سرعت نوشتن کم بشه ولی در عوض وقتی توی کوئری موقع خوندن، فیلدی که ایندکس شده رو توی شرط WHERE بیارین، خیلی سریع رکورد پیدا و بازیابی میشه و درنتیجه سرعت خوندن به شدت افزایش پیدا میکنه. البته ایندکس کردن توی فیلدهایی که مقدار تکراری زیاد دارن (اصطلاحاً کاردینالیتی بالا دارن)، سرعت جستجو رو آنچنان بالا نمیبره که دلیلش فکر میکنم واضح باشه.

UNIQUE مشابه INDEX هست با این تفاوت که اجازه نمیده دو رکورد، مقدار تکراری توی اون فیلد داشته باشن.

FULL TEXT هم برای جستجوی تمام متن (MATCH ... AGAINST) کاربرد داره و فقط هم توی MyISAM قابل استفاده است.
پاسخ
تشکر شده توسط: captain , olampiad
#3
(15-06-1394، 01:18 ب.ظ)ADMIN نوشته: FULL TEXT هم برای جستجوی تمام متن (MATCH ... AGAINST) کاربرد داره و فقط هم توی MyISAM قابل استفاده است.
در InnoDB هم از MySQL ورژن 5.6.4 به بعد هم قابل استفاده اس.
پاسخ
تشکر شده توسط:
#4
درسته ولی توی هاست های اشتراکی، اکثراً نصب نیست. بهرصورت جزو ایندکسها به اون شکلی که PRIMARY KEY و INDEX و UNIQUE بکار میرن محسوب نمیشه و کاربرد و هدفش چیز دیگه است.
پاسخ
تشکر شده توسط:




کاربران در حال بازدید این موضوع: 1 مهمان