View Full Version : بهینه ترین روش جستجو روی تعداد خیلی بالایی رکورد
malloc
سه شنبه 06 مرداد 1394, 21:46 عصر
سلام دوستان... من یه دیتابیس دارم که حدود 200-300 هزارتا رکورد توی یکی از جدول هام داره ... اون جدول هم 12 تا فیلد داره .... حالا من میخوام براساس جستجو کاربر روی یه فیلد خاص Like بزنم و بیارم ..... مثلا کاربر جستجو میکنه "تلفن بی سیم" من براساس هر کلمه یبار Like میخوام بزنم که بهترین نتیجه رو بیاره .... حالا نمیدونم منظورمو رسوندم یا نه اما سیستمم کنده ..... شما واسه همچین جستجو هایی چیکار میکنید >>>؟؟؟
من اومدم و توی کدهای سی شارپ براساس کلمه و شرایط جستجو کدهای sql رو میسازم ..... اما خیلی کنده .... نمیدونم بخاطر اینه که توی سی شارپ کدشو میزنم یا .... ! نمیدونم
pbm_soy
چهارشنبه 07 مرداد 1394, 01:01 صبح
فکر نمیکنم اگه کد را در sqlserver هم بنویسید تاثیر آنچنانی بگذارد نهایتاً در حد خیلی کم تاثیر خواهد گذاشت
آیا از امکانات ایندکسینگ استفاده میکنید مثلا براساس هر فیلدی که میخواهید جستجو کنید ایندکس زده باشید وآنرا قبل از جستجو فعال کنید
ایندکسها اگر بطور صحیح استفاده شوند سرعت جستجو را فوق العاده بالا میبرند
tooraj_azizi_1035
چهارشنبه 07 مرداد 1394, 09:07 صبح
سلام
كدتون رو قرار بدين بشه روش بحث كرد.
malloc
چهارشنبه 07 مرداد 1394, 10:18 صبح
سلام دوستان .... جستجو من روی یک فیلد هست .... و روی همون فیلد هم ایندکس زدم /// یعنی روی جدولش کلیک راست کردم و ایندکس رو ست کردم .....
در مورد کد هم والا فکر نکنم آنچنان کمکی کنه چون بیشتر منطق مهمه .....ضمنا کد ها چون توی س شارپ تولید میشه خیلی کج و کوله هست
یه سوال اساسی .... توی دستورات اسکیوال کدومشون هزینه زیادی داره ؟؟؟ یعنی uninon یا order by یا having , group by یا ...... اینا کدومشون سریع هست کدومشون کند
ضمنا یه سوال دیگه ..... ما تکنولوژی سریعی برای جستجو نداریم که مثلا اونو وصلش کنیم به جدولمون و شرط ها رو بهش بگیم بعد خودش نتایج و برگردونه ؟
و
tooraj_azizi_1035
چهارشنبه 07 مرداد 1394, 12:20 عصر
یه سوال اساسی .... توی دستورات اسکیوال کدومشون هزینه زیادی داره ؟؟؟ یعنی uninon یا order by یا having , group by یا ...... اینا کدومشون سریع هست کدومشون کند
هزينه Sort معمولاً زياد هست كه به order by مربوط ميشه (نه فقط) و اينكه سريع بودن يا كند بودن هر دستوري رو حجم داده ها و پلن اجراي كوئري تعيين مي كنه و نمي تونيم بگيم كه فلان دستور كند هست يا سريع.
در مورد ايندكس هم اگر شرط كوئري شما به صورت LIKE '%%' هست يعني بين دو % مقدار جستجو رو قرار ميدين ايندكس استفاده نميشه و تاثيري در سرعت نداره مگر اينكه % اول رو برداريد مثل:
select * from tbl where field like 'some%'
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.