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

نام تاپیک: مشکل با سرعت بسیار کند اجرای کوئری

  1. #1
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    68

    Question مشکل با سرعت بسیار کند اجرای کوئری

    سلام به همه دوستان
    من یه کوئری دارم که باید داخل یک جدول نمایندگی هایی رو که از یه حدی بیشتر رکورد دارند رو از چند تا فیلداشون معدل بگیرم
    و بعد چنتا فیلد از مشخصات نمایندگی رو هم بهش میچسبونه و خروجی میده

    select
    ((avg(Rawdata.Q1 )-1)*250) as Q1, ((avg(Rawdata.Q2 )-1)*250) as Q2,
    ((avg(Rawdata.Q3 )-1)*250) as Q3, ((avg(Rawdata.Q4 )-1)*250) as Q4,
    ((avg(Rawdata.Q5 )-1)*250) as Q5, ((avg(Rawdata.Q6 )-1)*250) as Q6,
    ((avg(Rawdata.Q7 )-1)*250) as Q7, ((avg(Rawdata.Q8 )-1)*250) as Q8,
    ((avg(Rawdata.Q9 )-1)*250) as Q9, ((avg(Rawdata.Q10 )-1)*250) as Q10,
    ((avg(Rawdata.Q11 )-1)*250) as Q11, ((avg(Rawdata.Q12 )-1)*250) as Q12,
    ((avg(Rawdata.Q13 )-1)*250) as Q13, ((avg(Rawdata.Q18 )-1)*250) as Q18,
    Count(*) as cntr,rawdata.Bcode2,
    Companies.BCode, Companies.BranchName, Companies.Ostan, Companies.city, Companies.GTP
    from rawdata , Companies
    where rawdata.Bcode2 in (select Bcode2 from Rawdata Group by BCode2 Having Count(*)<10)
    GROUP BY Rawdata.BCode2, Companies.BCode, Companies.BranchName, Companies.Ostan, Companies.city, Companies.GTP

    مشکل اصلی افت سرعت و حتی هنگ در قسمتی هست که کد نمایندگی رو توی جدولی که از شمارش رکورد ها جستجومی کنه اتفاق میافته که نمیدونم چجوری حلش کنم ؟

    where rawdata.Bcode2 in (select Bcode2 from Rawdata Group by BCode2 Having Count(*)<10)

    آیا با Inner Join میشه چیزی ساخت که جایگزین این بشه ؟

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    68

    نقل قول: مشکل با سرعت بسیار کند اجرای کوئری

    شاید بگید خیلی پیچیدش کردم
    ولی اون خطی که گفتم سرعت رو پایین میاره حذف کردم و کد رو به شکل زیر تغییر دادم ولی بازم همون مشکل سرعت:
    /* ALIAS: rasool */
    select
    ((avg(Rawdata.Q1 )-1)*250) as Q1, ((avg(Rawdata.Q2 )-1)*250) as Q2,
    ((avg(Rawdata.Q3 )-1)*250) as Q3, ((avg(Rawdata.Q4 )-1)*250) as Q4,
    ((avg(Rawdata.Q5 )-1)*250) as Q5, ((avg(Rawdata.Q6 )-1)*250) as Q6,
    ((avg(Rawdata.Q7 )-1)*250) as Q7, ((avg(Rawdata.Q8 )-1)*250) as Q8,
    ((avg(Rawdata.Q9 )-1)*250) as Q9, ((avg(Rawdata.Q10 )-1)*250) as Q10,
    ((avg(Rawdata.Q11 )-1)*250) as Q11, ((avg(Rawdata.Q12 )-1)*250) as Q12,
    ((avg(Rawdata.Q13 )-1)*250) as Q13, ((avg(Rawdata.Q18 )-1)*250) as Q18,
    Count(*) as cntr,rawdata.Bcode2,
    Companies.BCode, Companies.BranchName, Companies.Ostan, Companies.city, Companies.GTP
    from rawdata , Companies
    GROUP BY Rawdata.BCode2, Companies.BCode, Companies.BranchName, Companies.Ostan, Companies.city, Companies.GTP
    Having Count(*)<10

  3. #3

    نقل قول: مشکل با سرعت بسیار کند اجرای کوئری

    اگر این سوال مربوط میشه به Microsoft SQL Server می تونید آن را در تالار SQL Server مطرح کنید تا دوستان مدیر کمک و راهنمایی کنند.

  4. #4
    کاربر تازه وارد
    تاریخ عضویت
    اردیبهشت 1385
    پست
    68

    نقل قول: مشکل با سرعت بسیار کند اجرای کوئری

    متأسفانه برای چندمین بار سؤال من بدون جواب موند
    البته در مورد برخی دوستان دیگه هم اتفاق افتاده ولی فکر میکنم بد هم نباشه چون باز هم سبب شد خودم بیشتر روش کار کنم و مشکلم رو حل کنم
    در مورد شما که میگید توی بخش خودش مطرح کنم باید بگم من مطرح کردم کوئری و چندان ربطی نداره که دیتابیس من از چه نوعی هست چون کوئری هست سوال کلیت داره و ساختار کوئری من مورد بحث بود نه پایگاه داده
    به هر حال خودم حلش کردم
    کدش رو میذارم برای کسانی که ممکنه همین مشکل رو داشته باشن

    select
    ((avg(Rawdata.Q1 )-1)*250) as Q1, ((avg(Rawdata.Q2 )-1)*250) as Q2,
    ((avg(Rawdata.Q3 )-1)*250) as Q3, ((avg(Rawdata.Q4 )-1)*250) as Q4,
    ((avg(Rawdata.Q5 )-1)*250) as Q5, ((avg(Rawdata.Q6 )-1)*250) as Q6,
    ((avg(Rawdata.Q7 )-1)*250) as Q7, ((avg(Rawdata.Q8 )-1)*250) as Q8,
    ((avg(Rawdata.Q9 )-1)*250) as Q9, ((avg(Rawdata.Q10 )-1)*250) as Q10,
    ((avg(Rawdata.Q11 )-1)*250) as Q11, ((avg(Rawdata.Q12 )-1)*250) as Q12,
    ((avg(Rawdata.Q13 )-1)*250) as Q13, ((avg(Rawdata.Q18 )-1)*250) as Q18,
    Count(*) AS cntr, rawdata.Bcode2,
    Companies.BCode, Companies.BranchName,Companies.city, Companies.GTP,Companies.RKOLD,Rawdata.Ostan
    FROM rawdata INNER JOIN companies ON Rawdata.Bcode2=Companies.Bcode2
    GROUP BY Rawdata.BCode2, Companies.BCode, Companies.BranchName,Companies.city, Companies.GTP,Companies.RKOLD,Rawdata.Ostan
    HAVING Count(*)>10;

    در حقیقت من بجای استفاده از Inner Join خودم اون رو دستی پیاده سازی کرده بودم که با مشکل افت سرعت مواجه شده بودم
    بعنوان تجربه عرض کنم اگر شما با بهترین روش هم دستورات SQL رو پیاده سازی کنید باز هم 1 دهم سرعت اجرای دستور معادلش توی DBM رو نخواهید داشت

  5. #5

    نقل قول: مشکل با سرعت بسیار کند اجرای کوئری

    bale doste aziz ,shoma dar query aval aslan join nazadid va dar vaghe cross join kardid ke mosalame be shedat ofte sorat khahid dasht

برچسب های این تاپیک

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

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