PDA

View Full Version : ایندکس گذاری در MySQL



trasilver
شنبه 16 فروردین 1393, 00:19 صبح
سلام خدمت دوستان.

متاسفانه بعد از 10 ساعت(و حتی بیشتر) جستجو در گوگل به چیزی که می خواستم نرسیدم!

می دونم جای تاپیک اینجا نیست ولی خیلی از دوستان برای جواب این سوال بیشتر میرن قسمت php تا MySQL :لبخند:(مثل خود بنده :لبخند:)

خوشبختانه تونستم ایندکس هارو در MySQL درک کنم و بفهمم دقیقا چی کار می کنند.

اما نتونستم بفهمم چطور ایندکس گذاری کنیم!

می دونم چی رو ایندکس بذارم ولی چجوریش رو نه متاسفانه!

حالا از دوستان می خوام لطفی بکنند و این گزینه های ایندکس رو یه توضیح خلاصه بدند و کاراییش رو هم بفرمایند.

PRIMARY
INDEX
UNIQUE
SPATIAL
FULLTEXT

موقعی که توی phpmyadmin می خوام یک ایندکس تعریف کنم این گزینه ها میاد.
خلاصه ممنونتون میشم این هارو توضیح بدید و اینکه اگه نکته ی دیگری برای بهینه سازی دیتابیس های بزرگ هست بجز ایندکس گذاری ممنون میشم لینک بدید. (فقط خواهشی که دارم از wikipedia لینکی ندید! :عصبانی++: معلوم نیست اصلا چی به چیه! نوشته water بعدش لینک خورده روی لینک کلیک می کنی دوباره اونجا مثلا نوشته food اونم لینکه دوباره 20 صفحه هم واسه اون! خلاصه بخوای چیزی رو از wikipedia بخونی جمعا باید 3 ماه وقت بذاری و تازه اونم اگه چیزی حالیت بشه و تموم بشه مطالبش :عصبانی::لبخند:)
ممنون از لطفتون :قلب:

یه سوال مهم هم یادم رفت بپرسم! به طور حدودی هر تیبل چند ایندکس داشته باشه خوبه؟ (حداکثرش)
می دونم بر اساس نیاز هست ولی حدودی بگید ممنون میشم.

Golsha
شنبه 16 فروردین 1393, 08:21 صبح
سلام دوست عزیزم ، unique واسه ایجاد محدودیت یکتا بودن یک فیلده ، میدونم نفهمیدی ، یعنی توی یه فیلد مقدار تکراری نمیشه نوشت . مثلا اگه قبلا توی فیلدی به نام name یه اسم به نام مسعود داشته باشی دیگه نمیتونی تو اون فیلد اسم مسعود رو وارد کنی ، چون قبلا داشتیش . این از این

primary برای ایجاد یکتا بودن یه row به کار میره ، فرض کن تو یه فیلد دوتا نام یکسان داشته باشی که توضیحاتشون فرق کنن ، اونوقت اگه بخوای دنبال یکی از این اسم ها بگردی و توضیحاتش رو نمایش بدی ، نمیتونی که ، اینجاست که primary به کار میاد ، یه فیلد دیگه ایجاد میکنی به نام id تو اون هر خط رو یه شماره میدی ، اونوقت اونو در حالت primary ست میکنی ، بعد از اون هر خط واسه خودش مستقل میشه . یه آرایه رو فرض کن ، کلید های یه آرایه همون فیلد primary توی mysql ـه

بقیشم نمیدونم :)

شرمنده دیگه بهتر از این نمیتونستم توضیح بدم

metal gear solid 4
شنبه 16 فروردین 1393, 09:07 صبح
شما هر تعداد که بخواید میتونید ایندکس گذاری کنید. البته فکرکنم 32 یا 64 بیشتر نشه. حداقلش 16 ایندکس.
1- فیلدهایی که در یک جدول رجوع زیادی دارید و جستجوهای زیادی رو بر اساس اونها انجام میدید رو ایندکس کنید.
2- ایندکس گذاری روی نوشتن و آپدیت کردن های شما تاثیر منفی میزاره و سرعت نوشتن و آپدیت کردن رو پایین میاره. در هر جدول نهایتاً 3-4 ایندکس داشته باشید.
3- فیلدهایی که مقادیر ثابتی دارن و حالت های کمی هم دارن نیاز به ایندکس گذاری نیستن. مثل جنسیت کاربران مواردی شبیه به این.

Spatial به درد شما نمیخوره. ایندکس گذاری چند بعدیه و ایندکس گذاری B-Tree به دردش نمیخوره.
Full Text مقادیر از نوع تکست شما رو هم ایندکس میکنه. innoDB هم در نسخه های اخیر MySQL از این قابلیت پشتیبانی میکنه.
سه نوع اول رو هم دوستمون توضیح دادن

trasilver
شنبه 16 فروردین 1393, 17:49 عصر
ممنون از توضیحات دوستان و تشکر ویژه.
اینجا بنده می خواستم یوزرنیم کاربر رو ایندکس قرار بدم + یک فیلد دیگر هم هست به اسم سشن.

پس با این توضیحات هر دو رو باید با unique ایندکس گذاری خودم رو انجام بدم. ممنون از دوستان عزیز.و البته آیدی هم که خودش به صورت primary ایندکس گذاری شده.