Sql server cakePHP和sql视图-分页需要很长时间才能加载?

Sql server cakePHP和sql视图-分页需要很长时间才能加载?,sql-server,cakephp,optimization,sql-view,Sql Server,Cakephp,Optimization,Sql View,我目前正在从事一个cakePHP项目。我被卡住了 我创建了一个使用MSSQL视图作为表的模型: <?php class OrderList extends AppModel{ public $useTable = 'vOrderList'; public $primaryKey = 'OrderNumber'; public $order = array( "OrderList.OrderNumber"=>

我目前正在从事一个cakePHP项目。我被卡住了

我创建了一个使用MSSQL视图作为表的模型:

<?php
    class OrderList extends AppModel{
        public $useTable = 'vOrderList';
        public $primaryKey = 'OrderNumber';
        public $order = array(
            "OrderList.OrderNumber"=>"desc"
        );
    }
但是,查询时间太长了

加载页面需要8秒钟! 但是,如果我直接在mssql中打开视图表,加载只需要几毫秒

我不明白为什么

当我加载除我创建的视图之外的任何其他模型时,它工作得非常完美。它与我创建的自定义视图表不兼容

如果有人知道的话,我需要你的帮助


提前谢谢

好吧,我知道了。它在计算vOrderList中的条目数,这占用了大部分时间。我更改了订单列表模型,改为计算实际订单表

/**
 * Overridden paginate method 
 */
public function paginate($conditions, $fields, $order, $limit, $page = 1,
    $recursive = null, $extra = array()) {
    $recursive = -1;

    return $this->find(
        'all',
        compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group')
    );
}

/**
 * Overridden paginateCount method
 */
public function paginateCount($conditions = null, $recursive = 0,
                                $extra = array()) {
    $sql =
        "
        SELECT COUNT(*) AS [count] FROM [CustomerOrder] AS [Order] WHERE 1 = 1
        ";
    $this->recursive = $recursive;
    $results = $this->query($sql);
    return count($results);
}
/**
 * Overridden paginate method 
 */
public function paginate($conditions, $fields, $order, $limit, $page = 1,
    $recursive = null, $extra = array()) {
    $recursive = -1;

    return $this->find(
        'all',
        compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive', 'group')
    );
}

/**
 * Overridden paginateCount method
 */
public function paginateCount($conditions = null, $recursive = 0,
                                $extra = array()) {
    $sql =
        "
        SELECT COUNT(*) AS [count] FROM [CustomerOrder] AS [Order] WHERE 1 = 1
        ";
    $this->recursive = $recursive;
    $results = $this->query($sql);
    return count($results);
}