我有一张包含超过27,000条记录的表格。我想获取下拉列表中的所有数据。为此我已经实现了缓存,但它似乎没有工作,因为它变得非常慢并显示空白页面(有时浏览器被挂起)。
以下是我的代码(我正在使用yiiboilerplate):
组件数组中backend / config / main.php的配置:
'cache' => array(
//'class' => 'system.caching.CMemCache',
'class' => 'system.caching.CDbCache',
'connectionID' => 'db',
),
在查看页面中:
$dependency = new CDbCacheDependency('SELECT MAX(bank_id) FROM bank');
$bank = CHtml::listData(Bank::model()->cache(1000, $dependency)->findAll('is_active=1', array('order' => 'name')), 'bank_id', 'concatened');
echo $form->dropDownListRow($model, 'bank_id', $bank, array(
'empty' => 'Select'
));
我认为27000条记录不是大数据,但仍然非常慢,我想在整个应用程序中实现缓存。
我的配置是否正确?我哪里错了?
由于
答案 0 :(得分:0)
我认为findAll
中的参数不正确。
应该是:
Bank::model()
->cache(1000, $dependency)
->findAll([
'select' => 'bank_id',
'order' => 'name ASC', // if it is in ascending order
'condition' => 'is_active = 1'
]);
我不知道concatened
是什么,所以我忽略了它。但是你总是可以根据你的条件使用范围。