رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
سوال در مورد index گذاری
#1
Bug 
سلام دوستان
جدولی به اسم user دارم که دارای فیلد های نام، نام خانوادگی، شهر (مراکز استان) و 10 فیلد دیگه هست
این جدول دارای 5 میلیون سطر هست
توی یکی از کوئری ها لازم دارم که مثلا کسانی که اسمشان میلاد و ساکن شهر تهران هستند رو واکشی کنم

من فیلد شهر رو index کردم و کوئری زیر حدودا 500 هزار رکورد داره توش

select * from user where city = 21
حالا میخوام روی این نتیجه یه کوئری دیگه بزنم و کسانی که اسمشان میلاد هست رو دریافت کنم

$result = mysql_query(" select * from (select * from user where city = 21) where name = 'میلاد'",$serverLink);
if(gettype($result) == true)
    echo "trueeeee";

این رو تست کردم و خطا گرفتم؛ -نوع متغیر result بولین و محتوای اون true هست یعنی مقدار trueeeee رو چاپ میکنه- کوئری بالا (در صورت صحیح بودن؛ هست؟؟؟) با کوئری زیر چه فرقی داره از نظر سرعت:

select * from user where city=21 and name = 'میلاد'

میخوام بدونم وقتی بر اساس چند فیلد میخوایم جستجو داشته باشیم آیا خوبه که فیلد کلیدی رو index کنیم و بقیه پارامتر ها index نباشن؟؟؟
(توی این مثال index کردن 5 میلون رکورد که city بین 1 تا 31 دارن راحت تر نیست تا index کردن نام که n حالت مختلف داره.... ؟؟؟؟؟؟؟؟؟؟؟)

با تشکر
پاسخ
تشکر شده توسط:
#2
کلاً ایندکس کردن فیلدهای عددی بهتر از فیلدهای متنیه. ضمناً فیلد کلیدی (اگه منظورتون کلید اصلی جدول هست) خودش ایندکس داره و اگه کلید خارجی هم منظورتونه، تا ایندکس نباشه نمیتونید روش قید بزنید.
پاسخ
تشکر شده توسط:




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