Yii2 MySQL如何防止重复选择查询
我在调试菜单中看到一些重复的select查询。特别是,这是我在4个不同的文件中4次从page_adminlang WHERE(language=bg)和(page_id=1)中得到的。有没有一种正确的方法来防止这种情况发生?这对网站的速度性能有很大影响吗?我是否应该在一些变量中检索行,比如Yii2 MySQL如何防止重复选择查询,mysql,yii2-advanced-app,Mysql,Yii2 Advanced App,我在调试菜单中看到一些重复的select查询。特别是,这是我在4个不同的文件中4次从page_adminlang WHERE(language=bg)和(page_id=1)中得到的。有没有一种正确的方法来防止这种情况发生?这对网站的速度性能有很大影响吗?我是否应该在一些变量中检索行,比如$page=PageAdmin::findOne(1),然后在需要的地方调用它,这是正确的方法吗?我对其他文章进行了修改,但它们主要用于插入时的重复行。不熟悉MySQL性能调整,但想在这方面做得更深入一些。提前
$page=PageAdmin::findOne(1)
,然后在需要的地方调用它,这是正确的方法吗?我对其他文章进行了修改,但它们主要用于插入时的重复行。不熟悉MySQL性能调整,但想在这方面做得更深入一些。提前谢谢 我通常不会遇到这个问题,但是如果我必须多次从数据库中检索某些内容(我知道这不会改变),我会在我的模型中执行类似的操作
private $_myData = null;
public function getMyData() {
if ($this->_myData !== null) return $this->_myData;
$this->_myData = //query your data;
return $this->getMyData();
}
选项1-配置MemCache组件 一个更简单的方法是启用db缓存,这样就没关系了,先设置5秒的持续时间 在组件数据库连接设置中,设置以下属性:
'components' => [
'db' => [
'class' => 'yii\db\Connection',
'dsn' => 'mysql:host=localhost;dbname=dbname',
'username' => 'root',
'password' => 'password',
'charset' => 'utf8',
....
'enableQueryCache' => true,
'queryCacheDuration' => 5, // five seconds
....
]
]
见:
选项2-带缓存的自定义查询
public function getResults()
{
// Cache expires every x seconds (60sec/min * 60min/hr * 6hrs)
$duration = 60*60*6;
$sql_query = "SELECT * FROM some_table";
return Yii::$app->db->createCommand($sql_query)->cache($duration)->queryAll();
}
你认识这个问题吗?你知道它在密码里的什么地方吗?是的,我知道它在哪里;查看查询缓存和数据缓存。是的。这就是我要找的。谢谢你们两位。现在的问题是我无法在xampp上启用memcached。。。p、 我已经计划迁移到Linux了……记住,在本地机器上不一定需要memcached。您可以在本地使用Filecache,在生产服务器上使用memcached。唯一需要更改的是环境之间的配置。