تالار گفتمان nCIS.ir

نسخه‌ی کامل: سوال در مورد index گذاری
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
سلام دوستان
جدولی به اسم 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 حالت مختلف داره.... ؟؟؟؟؟؟؟؟؟؟؟)

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