PDA

View Full Version : سوال: كدام جستجو بهتره ؟



man_iran
سه شنبه 13 بهمن 1388, 19:53 عصر
من مي خوام اطلاعات يك كاربر (نام كاربري و رمز عبور) را جستجو كنم كدام روش بهتره؟

- اطلاعات را از اس كيو ال بياروم توي ديتاست بعد به وسيله يه حلقه فور جستجو كنم.
- مستقيما از طريق برنامه به اس كيو ال متصل بشم و با دستورات اس كيو ال جستجو كنم.

كدوماش بهتره ؟ اگر روش بهتري هم هست بگيد.
ممنون

ali.aghdam
سه شنبه 13 بهمن 1388, 20:23 عصر
به نظر بنده روش دوم بهتره چون تو برنامه های تحت شبکه بار ترافیکی میاد پایین.
البته من مبتدی هستم و تجربه آنچنانی ندارم.

hamidreza20
چهارشنبه 14 بهمن 1388, 04:50 صبح
من می خوام اطلاعات یک کاربر (نام کاربری و رمز عبور) را جستجو کنم کدام روش بهتره؟

- اطلاعات را از اس کیو ال بیاروم توی دیتاست بعد به وسیله یه حلقه فور جستجو کنم.
- مستقیما از طریق برنامه به اس کیو ال متصل بشم و با دستورات اس کیو ال جستجو کنم.

کدوماش بهتره ؟ اگر روش بهتری هم هست بگید.
ممنون

سلام دوست عزیز روش اول بهتره چون اگه بخوای لوگین و لوگات کنی دیگه لازم نیست به بانک سر بزنی.
چون اگه کاربر یوزر و کلمه عبور را اشتباه وارد کنه باید هی به بانک سر بزنی و اگه از روش اول بری دیگه نیازی نیست.

التماس دعا...

razavi_university
چهارشنبه 14 بهمن 1388, 08:10 صبح
جواب سوال شما به پارامترهای زیادی بستگی داره، مثلا جدول کاربران شما چند رکورد دارد؟ سرور sql لوکال است یا سرور جدا دارد و...
فرض کنید جدول شما 1000 رکورد داشته باشد، در صورت واکشی کل اطلاعات یک ترافیک اضافی روی شبکه گذاشته اید و حافظه برنامه را نیز کندتر کرده اید (فرض کنید برای یک وب سایت با همین تعداد کاربر بخواهید اینکار را بکنید. . .)
در صورتی که با پردازش این اطلاعات در sql پردازش ما بسیار کمتر خواهد شد

aminh85
چهارشنبه 14 بهمن 1388, 09:34 صبح
البته روش اول سربار اضافه واسه سیستمی که برنامه روش اجرا میشه داره. یه محیطو که تعداد کاربر و حساب کاربری زیادی داشته باشه فضای زیادی از ram و الگوریتم جستجوش هم زمانگیر میشه. کاملا بستگی به محیطی که برنامه قرار توش اجرا بشه داره.

man_iran
چهارشنبه 14 بهمن 1388, 17:22 عصر
بيشتر توضيح مي دم! :
بانك اطلاعاتي sql است و برنامه و بانك روي كلاينت هستند.

هر چه باشد روش اول بهتر به نظر مي رسد (البته ممكنه هم نباشه. در ادامه مي گم). روش اول بهتر به نظر مي رسد چونكه اطلاعات توي برنامه است و نياز نيست هي به بانك كانك كنيم و بقيه قضايا!.
ضمنا فرض كنيم تعداد ركورد هاي ما خيلي زياد باشد. باز هم به نظر مي رسد روش اول بهتر باشد.
ولي علتي كه من در بالا گفتم ممكنه روش دوم بهتر باشد نوع جستجو با استفاده از كئوري باشه! سوالي كه اينجا مطرح مي شه اصلا نوع جستجوي يه كئوري چطوريه ؟ شبيه يه حلقه فور عمل مي كنه ؟ يعني به صورت ترتيبي عمل مي كنه؟ يا روش خاصي داره؟
اگر شبيه حلقه فور باشه خب مسلم است روش اول در شريط برنامه اي كه گفتم بيشتر كاربرد داشته باشد.
حال نظر شما چيه ؟

razavi_university
پنج شنبه 15 بهمن 1388, 07:41 صبح
چند رکورد را می خواهید بازیابی کنید، یعنی در جستجو چند رکورد را می خواهد پیدا کنید؟

man_iran
پنج شنبه 15 بهمن 1388, 19:35 عصر
شما هر دو حالت را فرض کنید :
- جستجو برای یه رکورد خاص
- جستجو برای چندین رکورد نامشخص

ضمنا اگر کسی نحوه جستجو کوئوری ها را می دونه لطف کنه بگه (ترتیبی هستند یا جوری دیگه؟)

razavi_university
جمعه 16 بهمن 1388, 22:36 عصر
جستجو برای یک رکورد خاص که مطمئنا انجام query در sql توصیه می شود(مسلما برای یک رکود عاقلانه نیست کل Table را داخل برنامه بیاوریم) چه در حالتی که Sql روی سرور باشد یا Local باشد

منظورتون از چندین رکورد نامشخص رو نفهمیدم، لطفا بیشتر توضیح بدین

در مورد سوال آخر فکر کنم ترتیبی هستند ولی بر اساس Index گذاری شما، که باز هم به همین علت جستجو درQuery سریعتر از برنامه خواهد بود

saed2006
شنبه 17 بهمن 1388, 08:07 صبح
شک نکن که روش دوم هزار سرو گردن بالاتر از روش اول خواهد بود:لبخند:

man_iran
شنبه 17 بهمن 1388, 16:32 عصر
منظورتون از چندین رکورد نامشخص رو نفهمیدم، لطفا بیشتر توضیح بدین


منظورم تعدادشونه. يعني مشخص نباشه چند ركورد بعد از جستجو برگردانده مي شه (فرض كه زياد باشه).

شما مي گيد روش كوئري بهتر است.خب مي شه اين كار را در ديتابيس انجام داد يعني همان طور كه كوئري جستجو مي كنه كاري كنيم كه در ديتابيس نيز به همين شكل جستجو كنيم. اينطوري سرعت بالا مي ره چون ديگه نيازي به كانكت نيست.
اما چطوري ؟

razavi_university
دوشنبه 19 بهمن 1388, 07:48 صبح
دیتابیس برای جستجو در یک جدول از index ها کمک می گیرد (مگر در موارد خاص که کل جدول زا Scan می کند و یا ما بهش می گیم که سطر به سطر عملیات انجام دهد)
استفاده از index در سرعت عملیات های دیتابیس فوق العاده تاثیر دارد ولی در برنامه سمت Client همچین امکانی نداریم

پیشنهاد می کنم کتاب نکته های SQL Server 2000,2005 نوشته مهندس رضا رحمتی رو بخونین، نکات و پیشنهادات خیلی خوبی داره که در سایر کتابهای فارسی نمی تونین پیدا کنید

http://www.adinebook.com/images-1/images/products/9649367293.240.jpg?1207238121 (http://www.adinebook.com/gp/product/9649367293/ref=sr_1_1000_1/601-3098590-2977220)