我在 CakePHP 2.7.1 中使用 Sqlserver 数据源的应用程序有问题。
当我find
对任何表进行操作时,响应时间非常慢(超过 1 分钟)。
我用 XDebug + QCachegrind 做了研究,我发现问题是Sqlserver->listSources()
,它列出了数据库上的所有 1385 个表。
这是缩短的代码(核心文件 lib\Cake\Model\Datasource\Database\Sqlserver.php:172)
public function listSources($data = null) {
$result = $this->_execute("SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES");
while ($line = $result->fetch(PDO::FETCH_NUM)) {
$tables[] = $line[0];
}
return $tables;
}
我在块周围放置了一个简单的microtime
基准测试while
,几乎所有的处理时间都被这 3 行占用。
有什么办法可以加快这个速度吗?
有没有办法告诉 CakePHP 不要做这个listSources
过程?