2013-08-22 52 views
0

我在審查慢查詢日誌,我發現下面的查詢是低效的。由於查詢我怎麼可以跟蹤它回到Magento的源代碼(理想情況下一個文件)?:跟蹤SQL查詢返回到Magento源代碼

SELECT count(DISTINCT e.entity_id) FROM `sales_flat_order_item` AS `order_items` 
INNER JOIN `sales_flat_order` AS `order` ON `order`.entity_id = order_items.order_id AND `order`.state <> 'canceled' AND (`order`.created_at BETWEEN '2012-08-22 04:17:19' AND '2013-08-22 04:17:19') 
LEFT JOIN `catalog_product_entity` AS `e` ON (e.type_id NOT IN ('grouped', 'configurable', 'bundle')) AND e.entity_id = order_items.product_id AND e.entity_type_id = 4 
INNER JOIN `catalog_product_entity_int` AS `at_visibility_default` ON (`at_visibility_default`.`entity_id` = `e`.`entity_id`) AND (`at_visibility_default`.`attribute_id` = '102') AND `at_visibility_default`.`store_id` = 0 
LEFT JOIN `catalog_product_entity_int` AS `at_visibility` ON (`at_visibility`.`entity_id` = `e`.`entity_id`) AND (`at_visibility`.`attribute_id` = '102') AND (`at_visibility`.`store_id` = 1) 
INNER JOIN `catalog_product_entity_int` AS `at_status_default` ON (`at_status_default`.`entity_id` = `e`.`entity_id`) AND (`at_status_default`.`attribute_id` = '96') AND `at_status_default`.`store_id` = 0 
LEFT JOIN `catalog_product_entity_int` AS `at_status` ON (`at_status`.`entity_id` = `e`.`entity_id`) AND (`at_status`.`attribute_id` = '96') AND (`at_status`.`store_id` = 1) WHERE (parent_item_id IS NULL) AND (IF(at_visibility.value_id > 0, at_visibility.value, at_visibility_default.value) IN(2, 4)) AND (IF(at_status.value_id > 0, at_status.value, at_status_default.value) = '1')\G 

回答

1

打開了lib/Varien/Db/Adapter/Pdo/Mysql.php然後你會看到如下:

/** 
* Write SQL debug data to file 
* 
* @var bool 
*/ 
protected $_debug    = false; 

/** 
* Log all queries (ignored minimum query duration time) 
* 
* @var bool 
*/ 
protected $_logAllQueries  = false; 

/** 
* Add to log call stack data (backtrace) 
* 
* @var bool 
*/ 
protected $_logCallStack  = false; 

所以,如果你將$_logCallStack設置爲true您將在日誌文件中看到所需的全部內容。