0004760: new last_sales_order_detail function sql very slow. Optimized by @Braathwaate.
authorJoe Hunt <joe.hunt.consulting@gmail.com>
Mon, 19 Nov 2018 14:27:06 +0000 (15:27 +0100)
committerJoe Hunt <joe.hunt.consulting@gmail.com>
Mon, 19 Nov 2018 14:27:06 +0000 (15:27 +0100)
sales/includes/db/sales_order_db.inc

index 859fde7400450a5fe4361230a732d96835bb2dd7..97e188aa251bd2c1236a3ae86d75aaf17a89f5dc 100644 (file)
@@ -630,10 +630,12 @@ function is_prepaid_order_open($order_no)
 function last_sales_order_detail($order, $field)
 {
         $sql = "SELECT $field
-                        FROM ".TB_PREF."sales_order_details d"
-                        ." LEFT JOIN " .TB_PREF."sales_orders o on d.order_no=o.order_no
-                        WHERE debtor_no=" . db_escape($order->customer_id)
-                        . " ORDER BY d.id DESC LIMIT 1";
+            FROM ".TB_PREF."sales_order_details d
+            WHERE order_no =
+            (SELECT order_no FROM 1_sales_orders o
+            WHERE debtor_no=" . db_escape($order->customer_id) . "
+            ORDER BY order_no DESC LIMIT 1)
+            ORDER BY d.id DESC LIMIT 1";        
 
         $last_query=db_query($sql, "Retreive last order detail");
         $row = db_fetch_row($last_query);