Я создаю сетку в yii2, и у меня есть 2400 данных, которые не так много, но время загрузки сетки так много. Я заполняю данные из представления базы данных mysql. Пожалуйста, объясните мне, как ускорить просмотр сетки?Yii2 Ускоренная оптимизация скорости передачи данных
Вот мой код:
public function search($params) {
$this->load($params);
$query = (new Query)
->select('*')
->from('view_quotation_grid')
->orderBy('referenceno DESC');
if ($this->referenceno != "") {
//$query->andFilterWhere(['like', '', $this->referenceno]);
$query->andFilterWhere(['LIKE', 'referenceno', $this->referenceno]);
}
$query->andFilterWhere(['LIKE', 'customer_name', $this->customer_name]);
$query->andFilterWhere(['LIKE', 'product_model', $this->product_model]);
$query->andFilterWhere(['LIKE', 'quotation_status', $this->quotation_status]);
$query->andFilterWhere(['LIKE', 'is_confirm', $this->is_confirm]);
$query->andFilterWhere(['LIKE', 'net_total', $this->net_total]);
$query->andFilterWhere(['LIKE', 'doc_date', $this->doc_date]);
$pages = clone $query;
$pages->select('COUNT(*) count');
$pages = $pages->createCommand()->queryAll();
$pages = $pages[0];
$command = $query->createCommand();
$sql = $command->sql;
$params = $command->params;
$dataProvider = new SqlDataProvider([
'sql' => "$sql",
'params' => $params,
'totalCount' => $pages['count'],
'sort' => [
'attributes' => [
'sr',
'referenceno' => [
'asc' => ['referenceno' => SORT_ASC],
'desc' => ['referenceno' => SORT_DESC],
'default' => SORT_DESC,
'label' => 'referenceno',
],
'customer_name' => [
'asc' => ['customer_name' => SORT_ASC],
'desc' => ['customer_name' => SORT_DESC],
'label' => 'customer_name',
],
'quotation_status' => [
'asc' => ['quotation_status' => SORT_ASC],
'desc' => ['quotation_status' => SORT_DESC],
'label' => 'quotation_status',
],
'is_confirm' => [
'asc' => ['is_confirm' => SORT_ASC],
'desc' => ['is_confirm' => SORT_DESC],
'label' => 'is_confirm',
],
'net_total' => [
'asc' => ['net_total' => SORT_ASC],
'desc' => ['net_total' => SORT_DESC],
'label' => 'net_total',
],
'doc_date' => [
'asc' => ['doc_date' => SORT_ASC],
'desc' => ['doc_date' => SORT_DESC],
'label' => 'doc_date',
],
],
],
'pagination' => [
'pageSize' => 25,
],
]);
$models = $dataProvider->getModels();
if (!$this->validate()) {
// uncomment the following line if you do not want to any records when validation fails
// $query->where('0=1');
return $dataProvider;
}
return $dataProvider;
}
Если кто-то знает, как создать gridview из sql-процедуры, так PLZ отметить – Dani
Попробуйте выполнить SQL-запросы отдельно (за пределами GridView) для получения данных (с применением фильтров), а также для подсчета и просмотра времени выполнения. Вы можете использовать 'EXPLAIN' для более глубокого изучения. Также вы можете использовать панель отладки Yii и консоль браузера, возможно, это не проблема с базой данных, но, например, проблема загрузки ресурсов. – arogachev