PDA

View Full Version : جستجو با اعداد سرعت و دقت بیشتری داره یا حروف فارسی؟



saeed-71
دوشنبه 23 تیر 1393, 22:32 عصر
سلام.
جستجو با اعداد سرعت و دقت بیشتری داره یا حروف فارسی؟
من باید حدود 14 مورد رو جستجو کنم.
حالا اگه از همون اول برای این مواردی که باید تو دیتابیس ثبت بشن و جستجو توشون انجام بشه برا هر کدوم یه ایدی ثبت کنم و از رو ایدی جستجو کنم بهتره یا با همون حروف فارسی جستجو کنم؟
حدود 18 هزار آگهی خودرو هستش حداکثر

اگه بخوام هر مورد رو با ایدیش ثبت کنم دوباره موقع چاپ کردن و واکشی بازم دردسره!
به خاطر همین میخوام با همون حروف فارسی اطلاع رو وارد دیتابیس کنم و چاپشون کنم.
از این 14 موردی که باید مورد جستجو قرار بگیره 8 موردش فارسی باید جستجو بشه و طول هر کدومم حداکثر 12 کاراکتر هستش.

metal gear solid 4
سه شنبه 24 تیر 1393, 09:09 صبح
با آیدی جستجو کنید.
از لحاظ سرعت قابل مقایسه نیستن با هم. آیدی بسیار سرعت بیشتری داره.

saeed-71
سه شنبه 24 تیر 1393, 11:21 صبح
با آیدی جستجو کنید.
از لحاظ سرعت قابل مقایسه نیستن با هم. آیدی بسیار سرعت بیشتری داره.

خوب دوباره وموقع چاپ باید همه این ایدی ها رو برم از تیبلشون واکسی کنم کلی خودش زحمت و زمان میره!
تفاوتی اییجاد میکنه؟

DR.HTML
سه شنبه 24 تیر 1393, 11:25 صبح
کلا زمان جستجو کردن یا حتی like خیلی بیشتره تا واکشی

metal gear solid 4
سه شنبه 24 تیر 1393, 12:26 عصر
اینجور دنرمال سازی ها رو وقتی صحبت از چند ده میلیون یا چند صد میلیون رکورد باشه انجام میدن. به خاطر 18 هزار رکورد که نرمال سازی رو فدای پرفورمنس نمیکنن!!

saeed-71
سه شنبه 24 تیر 1393, 12:27 عصر
اینجور دنرمال سازی ها رو وقتی صحبت از چند ده میلیون یا چند صد میلیون رکورد باشه انجام میدن. به خاطر 18 هزار رکورد که نرمال سازی رو فدای پرفورمنس نمیکنن!!

نرمال سازی چیه؟
پرفورمنس چیه؟
کدومو فدای کدوم تکنم؟

metal gear solid 4
سه شنبه 24 تیر 1393, 12:31 عصر
نرمال سازی چیه؟
پرفورمنس چیه؟
کدومو فدای کدوم تکنم؟

بر اساس آیدی جستجو کنید. و اطلاعات رو بگیرید. همین.
روش اول شما بر اساس LIKE ـه که اصلاً منطقی نیست.

saeed-71
سه شنبه 24 تیر 1393, 12:33 عصر
نه بر اساس لایک نیست.
اطلاعات با <select></select> وارد میشن.
موقع جتجو هم میکم این کلمه مساوی اون کلمه باشه.

Unique
سه شنبه 24 تیر 1393, 13:14 عصر
دوست عزیز ، چرا در برابر تجربه دیگران مقاومت میکنید ؟
بهترین راه اینه که اطلاعات را بریزی توی جیک جدول و بر اساس id توی جدولی که fkey (کلید خارجی) شده جستجو کنید ! جستجو بر اساس متن بسیار کند تر هستش ! در مورد واکشی هم نیاز به هیچ کار اضافه ای بر اونچه که برای متن انچام میدین وجود نداره. راه درستش اینه.

arenaw
سه شنبه 24 تیر 1393, 13:19 عصر
میتونید فیلد تیبل رو از نوع Enum تعریف بکنید.

به این صورت که یه سری مقدار که قراره برای اون فیلد ست بشن رو موقع ساخت تیبل بهش میدید (به طور مثال amir,hasan,hoseyn)

دیتابیس میاد برای اینها یک مقدار آیدی در نظر میگیره، یک دیکشنری کنار این تیبل ایجاد میکنه که توش نوشته شده:
amir = 0, hasan=1, hoseyn=2

وقتی شما یک کوئری شبیه به این میزنید:


SELECT * FROM `table` WHERE `field` = 'amir';


دیتابیس اول نگاه میکنه ببینه amir مقدارش توی دیکشنری ای که برای این فیلد ذخیره کرده چنده؟
اگه اصلا مقدار amir برای این فیلد در نظر گرفته نشده بود، همون اول از اجرای کوئری صرف نظر میکنه، ولی اگه بود میاد یه چنین کوئری ای برای خودش اجرا میکنه:


SELECT * FROM `table` WHERE `field` = 0;


اگه قرار باشه مقادیر اون فیلد، در طول زمان کم و زیاد بشن، بهتره از روشی که دوستان گفتن استفاده کنید. ولی اگه مقادیرش ثابته، این روش توصیه میشه.

saeed-71
سه شنبه 24 تیر 1393, 13:27 عصر
دوست عزیز ، چرا در برابر تجربه دیگران مقاومت میکنید ؟
بهترین راه اینه که اطلاعات را بریزی توی جیک جدول و بر اساس id توی جدولی که fkey (کلید خارجی) شده جستجو کنید ! جستجو بر اساس متن بسیار کند تر هستش ! در مورد واکشی هم نیاز به هیچ کار اضافه ای بر اونچه که برای متن انچام میدین وجود نداره. راه درستش اینه.

خوب موقع چاپ اطلاعات اون فیلد کلید خارجی چاپ میشه؟
ببین اول عکس مربوط به اون جدولی هست که اطلاعات توش ذخیره میشن و جستجو میشن.اسمش INFO هستش.
دو تا فیلد body و body_color توش وجود داره که با کلید خارجی وصل شدن به فیلد ایدی جدول body و body_color
حالا موق چاپ چجوری بگم به جا کلید خارججی مقدار فیلد body و body_color چاپ بشن؟
121127
121128
121129

saeed-71
سه شنبه 24 تیر 1393, 20:43 عصر
چجوری میشه محتویات کلید خارجی رو چاپ کرد؟چجوری کار رو ساده تر میشه کرد؟

H:Shojaei
سه شنبه 24 تیر 1393, 23:02 عصر
سلام...
فک کنم شما یه کلید اصلی دارید که یه جای دیگه کلید خارجی مشه اگه اینه:
یه join بین این دو جدول با فیلد id بزنید و دیگر هیچ...
هم جدول اول هم جدول دوم رو واستون میاره تمام فیلد ها رو کامل کامل...

Unique
چهارشنبه 25 تیر 1393, 00:29 صبح
حالا موق چاپ چجوری بگم به جا کلید خارججی مقدار فیلد body و body_color چاپ بشن؟

با join کردن ! اینطوری :


select t1.body,t2.body_color from info t3 inner join body t1 on t1.id = t3.body inner join body_color t2 on t2.id = t3.body_color

join یکی از مهمترین مباحث پایگاه داده هستش و اگه تا حالا باهاش کار نکردین به شدت باید بچسبین و یاد بگیرینش.
یک انتقاد مهم دیگه اینکه این چه طرز انتخاب نام جداول و فیلد ها هستش ؟ سعی کنید از یک استانداردی چیزی برای خوانایی بیشتر استفاده کنین. اینطوری خودتون دچار مشکلات زیاد میشین.