1
我運行下面的查詢在我actionView($id)
:關係查詢 - SHOW FULL COLUMNS
$model = User::find()->where(['id' => $id]->with('profile')->one();
與此查詢完全相同的結果嘗試:從
$model = User::find($id)->with('profile')->one();
轉儲Yii調試器:
#1 20:39:49.379 6.5 ms SHOW SHOW FULL COLUMNS FROM `user`
C:\...\frontend\controllers\ProfileController.php (41)
#2 20:39:49.393 5.9 ms SHOW SHOW FULL COLUMNS FROM `profile`
C:\...\frontend\controllers\ProfileController.php (41)
#3 20:39:49.375 0.8 ms SELECT SELECT * FROM `user` WHERE `id`='8'
C:\...\frontend\controllers\ProfileController.php (41)
#5 20:39:49.391 0.7 ms SELECT SELECT * FROM `profile` WHERE `user_id`=8
C:\...\frontend\controllers\ProfileController.php (41)
這會返回我想要的所有信息,但它會查詢完整表用戶和配置文件模型,除了我期望的查詢(#3和#5)之外,每個表(#1和#2)需要6-7ms。所有查詢都鏈接到我的配置文件控制器中的同一行(41)。
爲什麼四個查詢運行這個簡單的查詢,以及做這樣的查詢的正確方法是什麼?