在开发的时候,经常需要看到magento所生成的sql语句,一般来说分为以下的两种情况:
(1)只需要查看某个sql语句:
$collection_of_products = Mage::getModel('catalog/product')->getCollection();
//var_dump($collection_of_products->getSelect()); //might cause a segmentation fault
var_dump(
(string) $collection_of_products->getSelect()
);
(2)查看mangento 所查生的所有sql,MySQL 提供了slow query的日志,但这个方法不是最简单的,事实上magento已经提供了log sql 的功能,但默认是不开启的(试想一下,如果默认是开启的,那么这个文件会变得无比巨大,而且对性能的影响很多)。
在lib/Varien/Db/Adapter/Pdo/Mysql.PHP 中,有以下几个变量,根据实际需要设置合适的值则可
/**
* Write SQL debug data to file 是否开启log
*
* @var bool
*/
protected $_debug = false;
/**
* Minimum query duration time to be logged 如果sql语句执行超过一定时间,则log下来,这个选项对于查询那些慢查询很有用
*
* @var unknown_type
*/
protected $_logQueryTime = 0.05;
/**
* Log all queries (ignored minimum query duration time) 记录下所有的查询,如果这个为真,则$_logQueryTime不起作用
*
* @var bool
*/
protected $_logAllQueries = false;
/**
* Add to log call stack data (backtrace) 记录下堆栈
*
* @var bool
*/
protected $_logCallStack = false;
/**
* Path to SQL debug data log 日志存放的位置
*
* @var string
*/
protected $_debugFile = 'var/debug/sql.txt';
|