نمایش نتایج 1 تا 8 از 8

نام تاپیک: بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

  1. #1

    بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

    سلام دوستان.
    یه سوال داشتم
    فرض کنید یه فروشگاه طراحی کردید و در قسمت داشبورد قرار هست یک سری گزارش بر اساس تعداد نمایش بدین
    مثلا تعداد سفارش های امروز
    تعداد پرداختی های موفق
    تعداد کل سفارشات
    تعداد سفارشات این هفته
    و......
    این مواردی که گفتم همگی در یک جدول قرار دارند
    حالت اول:
    یک کوئری به دیتابیس زده میشه و کل رکوردها ToList میشود و سپس مقدار آن درون یک متغیر از جنس Var ریخته میشود و کوئری های تعداد از طریق این متغیر به دست می آید( دیگه نیازی نیست با دیتابیس کار کنیم)

    حالت دوم:
    برای هر گزارش از طریق دستور Count یک درخواست به دیتابیس ارسال شود ( مثلا count سفارشات امروز)
    میخواستم بدونم کدوم روش بهینه تره هست؟ یا اصلا روش بهتری وجود دارد؟

  2. #2

    نقل قول: بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

    سلام، به نظر بنده همون حالت دوم خیلی بهتر و بهینه تر هستش، چون شما نهایتا تعداد رکوردهارو برمیگردونین، اما در حالت اول فرض کنین یک میلیارد سفارش در جدول داشته باشید، و بیاین کل اون یک میلیارد رکورد رو فقط به خاطر شمارش تعدادهای موردنظر روی سرور واکشی کنین، تصورش رو کنین که چقد از حافظه سرور رو بی خودی اشغال میکنه، و حالا در نظر بگیرین مثلا وب سایت شما چندین مدیر یا متصدی داره که اجازه گزارش گیری دارن اگه بخواین به ازای درخواست هر کدوم از مدیران یا متصدی ها یک میلیارد رکورد رو واکشی کنین دیگه خودتون به عمق فاجعه پی میبرین

  3. #3

    نقل قول: بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    سلام، به نظر بنده همون حالت دوم خیلی بهتر و بهینه تر هستش، چون شما نهایتا تعداد رکوردهارو برمیگردونین، اما در حالت اول فرض کنین یک میلیارد سفارش در جدول داشته باشید، و بیاین کل اون یک میلیارد رکورد رو فقط به خاطر شمارش تعدادهای موردنظر روی سرور واکشی کنین، تصورش رو کنین که چقد از حافظه سرور رو بی خودی اشغال میکنه، و حالا در نظر بگیرین مثلا وب سایت شما چندین مدیر یا متصدی داره که اجازه گزارش گیری دارن اگه بخواین به ازای درخواست هر کدوم از مدیران یا متصدی ها یک میلیارد رکورد رو واکشی کنین دیگه خودتون به عمق فاجعه پی میبرین
    ممنون از پاسختون..

    حالا یه سوالی که برام پیش اومد در رابطه با سایت های خبری مثل تابناک و ... هست.

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

  4. #4

    نقل قول: بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

    نمیدونم سایت تابناک از چه کتابخونه و پلاگین هایی استفاده کرده، اما بنده برای صفحه بندی از jquery datatables استفاده میکنم، در حالت عادی این پلاگین هم تمامی رکوردهارو واکشی میکنه و خود پلاگین سمت کلاینت کد html رو از این رکوردها تولید میکنه و صفحه بندی رو ایجاد میکنه (همون قضیه میشه) اما این کتابخونه یه اپشن داره با اسم server side proccessing از طریق اون بنده صفحه بندیامو سمت سرور بصورت کاملا کاستوم و بهینه انجام میدم و دیگه نگران سربار اضافه نیستم

  5. #5

    نقل قول: بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

    نقل قول نوشته شده توسط mr.sirwan مشاهده تاپیک
    نمیدونم سایت تابناک از چه کتابخونه و پلاگین هایی استفاده کرده، اما بنده برای صفحه بندی از jquery datatables استفاده میکنم، در حالت عادی این پلاگین هم تمامی رکوردهارو واکشی میکنه و خود پلاگین سمت کلاینت کد html رو از این رکوردها تولید میکنه و صفحه بندی رو ایجاد میکنه (همون قضیه میشه) اما این کتابخونه یه اپشن داره با اسم server side proccessing از طریق اون بنده صفحه بندیامو سمت سرور بصورت کاملا کاستوم و بهینه انجام میدم و دیگه نگران سربار اضافه نیستم
    منظورم سمت کاربر بود نه پتل ادمین
    فرض کنید آرشیو بلاگ یک سایت شامل 10000 تا رکورد باشه.
    حالا یه کاربری بخواد اون آرشیو رو ببینه باید صفحه ای ببینه و توی هر صفحه مثلا 10 تا مطلب رو
    نمونه این کار مثلا سایت persiangfx.com در پایین سایت صفحه بندی میشه. اگر حرف اولتون رو ملاک قرار بدیم باز هم اینجا داره کل اطلاعات از دیتابیس خونده میشه و بعدش صفحه بندی روش صورت میگیره

  6. #6

    نقل قول: بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

    متوجه نشدم، خب صفحه بندی سمت سرور مگه فقط برای پنل ادمین استفاده میشه؟ توی فرانت اند هم میتونین از صفحه بندی سمت سرور استفاده کنین، شاید شما منظور منو متوجه نشده باشین، من گفتم اون کتابخونه ای که من استفاده میکنم در حالت عادی کل اطلاعاتو واکشی میکنه، در این حالت تفاوتی نمیکنه واکشی توی فرانت اند باشه یا بک اند، کل رکورد ها واکشی میشه سمت کلاینت (براوزر) و اونجا صفحه بندی انجام میشه
    اما در ادامه گفتم که این کتابخونه یه اپشن داره که طوری طراحی شده که اندیس صفحه جاری و تعداد رکورد های قابل نمایش در هر صفحه و فیلتر های اعمال شده توسط کاربر رو به سرور ارسال میکنه، و شما سمت سرور طبق اون اطلاعاتی که بدستتون رسیده صفحه بندی رو انجام میدین و رکورد های واکشی شده رو به کاربر برمیگردونین
    در این حالت باید از متدهای skip و take استفاده کنین بعدا متد tolist رو فراخوانی کنین....
    نه اینکه همون اول متد tolist رو فراخوانی کنین، کل اطلاعات واکشی بشه توی رم سرور و بعد بیاین صفحه بندی رو روی یک میلیارد رکورد مقیم در رم انجام بدین

  7. #7
    کاربر دائمی
    تاریخ عضویت
    مهر 1390
    محل زندگی
    rayancode.ir
    پست
    1,559

    نقل قول: بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

    سلام/
    صفحه بندی به روش های متعددی انجام میشه.
    اما در کل لازم نیست شما حتما همه رو tolist بکنی و بعد count بگیری . می تونی کانت بگیری الگوریتم رو اجرا کنی و با دستور take مقدار مورد نیازت رو بگیری. البته پلاگین ها هم واسه نمایشش وجود داره.
    بعد سایت های بزرگ چون معمولا سرور دارن و یا vps دارن و parallel-programming رو به خوبی پیاده سازی می کنن.
    از طرفی تو cms های قوی طراح دیتابیس بصورت جدا و تخصصی هستن و کارشون بهینه سازی واکشی اطلاعاته.
    در کل بهینه بودن مختص به کوئری نیست.
    موفق باشی

  8. #8
    کاربر دائمی آواتار nunegandom
    تاریخ عضویت
    اردیبهشت 1390
    محل زندگی
    الان اصفهان
    سن
    32
    پست
    828

    نقل قول: بهینه بودن کوئری ها هنگام گرفتن گزارش تعداد از دیتابیس

    با سلام
    برای صفحه بندی از این میتونید استفاده کنید
    هم سادست هم بهینست
    فقط وقتی که اضافه کردید به پروژه فایل css اش توش نیست که اونم اینجاست من که سایت رو اول میپرسم قراره سرور بگیرن یا خیر و بر اساس منابعی که در اختیار میذارن درست میکنم شما رو نمیدونم مشتریا ما که این مدلی هستن

تاپیک های مشابه

  1. نرم افزاری برای بهینه کردن کوئری ها
    نوشته شده توسط sg.programmer در بخش T-SQL
    پاسخ: 0
    آخرین پست: چهارشنبه 22 شهریور 1396, 20:40 عصر
  2. پاسخ: 0
    آخرین پست: پنج شنبه 22 اسفند 1392, 13:28 عصر
  3. پاسخ: 2
    آخرین پست: سه شنبه 08 شهریور 1390, 11:54 صبح
  4. بهينه سازي كوئري ها در پايگاه داده هاي توزيع شده
    نوشته شده توسط m0rteza در بخش SQL Server
    پاسخ: 1
    آخرین پست: سه شنبه 08 تیر 1389, 23:18 عصر
  5. پاسخ: 1
    آخرین پست: پنج شنبه 23 مهر 1388, 11:45 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •