Mysql 为什么这个查询需要15秒?
我正在使用多个Mysql 为什么这个查询需要15秒?,mysql,yii,Mysql,Yii,我正在使用多个dbs的Yii MCV 为什么运行此代码需要15秒 如何改进 我使用server\u id整数值切换db连接 这是切换db连接的类 class VillageSlaveM extends VillageM { const UNVERIFIED = 0; const VERIFIED = 1; public static function model($className = __CLASS__) { return parent::mode
dbs
的Yii MCV
为什么运行此代码需要15秒
如何改进
我使用server\u id
整数值切换db连接
这是切换db连接的类
class VillageSlaveM extends VillageM {
const UNVERIFIED = 0;
const VERIFIED = 1;
public static function model($className = __CLASS__) {
return parent::model($className);
}
public static $server_id;
public static $slave_db;
public function getDbConnection() {
self::$slave_db = Yii::app()->dbx;
if (self::$slave_db instanceof CDbConnection) {
self::$slave_db->active = false;
$config = require(Yii::app()->getBasePath() . '/config/main.php');
$connectionString = $config['components']['dbx']['connectionString'];
self::$slave_db->connectionString = sprintf($connectionString, self::$server_id);
self::$slave_db->setActive(true);
return self::$slave_db;
}
else
throw new CDbException(Yii::t('yii', 'Active Record requires a "db" CDbConnection application component.'));
}
}
这是需要15秒才能执行的代码,不知道为什么这么多
它选择具有最早的last\u update\u资源
时间戳值的一个村庄
我已经为所有涉及的db表字段设置了索引
$criteria = new CDbCriteria();
$criteria->condition = 'last_update_resource <= ' . ($time_start - 60 * 60 * 8);
$criteria->order = 'last_update_resource asc';
$criteria->limit = 1;
VillageSlaveM::$server_id = $world_id;
$start_x = time();
$model_village = VillageSlaveM::model()->findByAttributes(array('map_type_id' => VillageM::$map_type_id['village'], 'status' => VillageM::ACTIVE), $criteria);
$stop_x = time();
$msg[] = 'start_x: ' . ($stop_x - $start_x);
$criteria=新的CDbCriteria();
$criteria->condition='last\u update\u resource可能您的数据库服务器在地理位置上离您很远?检查日志中的查询,并运行解释查询以查看发生了什么<代码>解释选择…
似乎有人删除了索引;泰戴维