• 0

مشكلة query تأخذ وقت طويل للتنفيذ مع زيادة حجم البيانات؟

السلام عليكم 

لدي مشكلة في query أنها تأخذ وقت طويل للتنفيذ كل ما زاد حجم البيانات في الجدول أريد المساعدة في تحسين الكود

تستخرج query جميع أنواع العملات وتقارن فرق بين سعر العملة بين اليوم وأمس 

أريد تحويل استخراج الفرق عند إضافة سجل جديد على الجدول يعني عند القيام بعملية insert

$rs = mysqli_query($con, "SELECT a.wdt_ID, a.item_type, a.selling_price, a.date_price 
                          FROM wpdatatable_21 a 
                          WHERE date_price IN (SELECT MAX(date_price) 
                                               FROM  wpdatatable_21 
                                               WHERE item_type=a.item_type
                                              ) 
                            and a.selling_price > 0 
                          GROUP BY item_type");


  while($row = mysqli_fetch_object($rs))
 {
    $rs2 = mysqli_query($con, "SELECT selling_price 
                               FROM wpdatatable_21 
                               WHERE item_type='".$row->item_type."' 
                                 AND date_price < '".$row->date_price."' 
                               order by date_price desc limit 1");

    if(mysqli_num_rows($rs2) > 0)
    {
        $row2 = mysqli_fetch_object($rs2);
        $price = $row2->selling_price;
    }
    else
    {
                    $price = 0;

    } 
   $dif=$row->selling_price - $price;

  if($dif > 0)
  {
    $status  = "up";
  }
  else if($dif < 0)
  {
   $status  = "down";
 }
 else if($dif == 0)
 {
  $status  ="fixed";
 }

$row->item_type;
$row->date_price;
$status;
$row->selling_price;

}

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

هل من الممكن توضيح بنية الجدول wpdatatable_21 أي ذكر حقوله (مع أنواعها) ؟

أمر آخر. ما هي وظيفة هذه الأسطر في آخر حلقة while:

$row->item_type;
$row->date_price;
$status;
$row->selling_price;

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

ما داخل while 

هو عرض للقيم النهائية او النتيجة النهائية لقيم محددا من الجدول وتوضيح للجدول بالمرفقات

وشكرا

screen_shot.png

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
SELECT a.wdt_ID, a.item_type, a.selling_price, a.date_price 
                          FROM wpdatatable_21 a 
                          WHERE date_price IN (SELECT MAX(date_price) 
                                               FROM  wpdatatable_21 
                                               WHERE item_type=a.item_type
                                              ) 
                            and a.selling_price > 0 
                          GROUP BY item_type

هل أنت متأكد أنّ هذه التعليمة تعمل. أعتقد أنّها يجب ألّا تعمل!

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن