ارسالها: 448
موضوعها: 206
تاریخ عضویت: خرداد 1394
اعتبار:
0
تشکرها: 154
16 بار تشکر شده در 14 پست
سلام
من میخوام یه جامعه مجازی درست کنم.
به خاطر همین در مورد بهینه بودن دیتابیس ها جستجو کردم.
بیشترین تاکیدی که در مطالب بود بر روی نرمال سازی و ایندکس گذاری بود.
در مورد ایندکس گذاری:
به تصویری که براتون میفرستم ی نگا بندازید.
تو این تصویر مگه دیتابیس من ایندکس گذاری نشده.
ایندکس گذاری مگه همون id که مادرست میکنیم نیست.
آیا به غیر از ایندکس عددی ایندکس دیگه ای هم درست میکنن؟
میگفتن دیتابیس اگه ایندکس گذاری بشه خیلی بهتر میشه ولی من دقیقا از ایندکس گذاری که میگن سردر نمیارم.
مرسی
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
بجز کلید اصلی (همون id) ایندکسهای دیگری هم وجود دارن: INDEX و UNIQUE و FULL TEXT
INDEX فقط عمل ایندکس کردن و تشکیل درخت جستجوی دودویی رو انجام میده که بهتره فقط برای فیلدهای عددی int و نهایتاً متنی varchar با حداکثر طول 255 کارکتر انجام بشه چون درغیر اینصورت جدول ایندکس رو خیلی طولانی میکنه. وقتی فیلدی ایندکس شده باشه، موقع ذخیره کردن، شماره رکورد (در حقیقت آدرس فیزیکی شروع رکورد) توی یک جدول مرتب شده به اسم جدول ایندکس ذخیره میشه. این کار باعث میشه سرعت نوشتن کم بشه ولی در عوض وقتی توی کوئری موقع خوندن، فیلدی که ایندکس شده رو توی شرط WHERE بیارین، خیلی سریع رکورد پیدا و بازیابی میشه و درنتیجه سرعت خوندن به شدت افزایش پیدا میکنه. البته ایندکس کردن توی فیلدهایی که مقدار تکراری زیاد دارن (اصطلاحاً کاردینالیتی بالا دارن)، سرعت جستجو رو آنچنان بالا نمیبره که دلیلش فکر میکنم واضح باشه.
UNIQUE مشابه INDEX هست با این تفاوت که اجازه نمیده دو رکورد، مقدار تکراری توی اون فیلد داشته باشن.
FULL TEXT هم برای جستجوی تمام متن (MATCH ... AGAINST) کاربرد داره و فقط هم توی MyISAM قابل استفاده است.
ارسالها: 3,701
موضوعها: 140
تاریخ عضویت: اردیبهشت 1394
اعتبار:
134
تشکرها: 195
3447 بار تشکر شده در 2120 پست
درسته ولی توی هاست های اشتراکی، اکثراً نصب نیست. بهرصورت جزو ایندکسها به اون شکلی که PRIMARY KEY و INDEX و UNIQUE بکار میرن محسوب نمیشه و کاربرد و هدفش چیز دیگه است.