Yii2 MySQL, как предотвратить дублирование запроса выбора - PullRequest
0 голосов
/ 18 мая 2018

В моем меню отладки я увидел, что у меня есть несколько дублирующих запросов выбора.В частности, это тот, который я получил 4 раза SELECT * FROM page_adminlang WHERE (language=bg) AND (page_id=1) в 4 разных файлах.Есть ли правильный способ предотвратить такие ситуации, и это большой удар по скорости сайта?Должен ли я получить строку в некоторой переменной, такой как $page = PageAdmin::findOne(1), и затем вызывать ее там, где мне нужно, и это правильный путь?Я красную другие статьи, но они были в основном для повторяющихся строк при вставке.Не знаком с настройкой производительности MySQL, но хочу углубиться в эту область. Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Более простой способ - включить кеширование БД, тогда это не имеет значения, сначала установите 5-секундную длительность.

В настройках соединения с БД вашего компонента задайте следующие свойства:

'enableQueryCache '=> true,

' queryCacheDuration '=> 5, // пять секунд

См. https://www.yiiframework.com/doc/guide/2.0/en/caching-data

https://www2.0/yii-db.yiiframework.com/doc/api/-connection

0 голосов
/ 18 мая 2018

Я обычно не сталкиваюсь с этой проблемой, но если мне нужно несколько раз что-то извлечь из базы данных (и я знаю, что это не изменится), я делаю что-то подобное в моей модели

private $_myData = null;
public function getMyData() {
    if ($this->_myData !== null) return $this->_myData;

    $this->_myData = //query your data;
    return $this->getMyData();
}
...