MySQL VIEW についてもっと調べようとしていますが、まだかなり混乱しています (特に詳細について)。
正しく理解すれば、ビューは、使用される保存された SELECT クエリ以上のものではありません。しかし、私の問題は、VIEW 内の WHERE 句に特定の値を使用したいときに始まります。
次の VIEW があるとします。
SELECT `user`.`id`, `userrole`.`key` AS `role`, `userstatus`.`key` AS `status`
FROM `user`
LEFT JOIN `userrole`
ON `userrole`.`id` = `user`.`userrole_id`
LEFT JOIN `userstatus`
ON `userstatus`.`id` = `user`.`userstatus_id`
現在、これにより、すべてのユーザーのリストが現在の役割/ステータスとともに提供されます
+----+-------+--------+
| id | role | status |
+----+-------+--------+
| 1 | admin | active |
| 2 | user | active |
| 3 | user | active |
| 4 | admin | active |
| .. | ... | ... |
+----+-------+--------+
今、私は 3 のユーザーの役割/ステータスを知りたいだけなので、で をID
追加する必要がありSELECT
ますよね? しかし、私がそれを行うと、正確にはどうなりますか?VIEW
WHERE id = 3
すべてのユーザーをVIEW
静止させ、データ全体を削除して、 のみを表示しますか? それとも、のみが選択されるように最適化されますか?SELECT
id = 3
VIEW
user.id = 3
私はこれのパフォーマンス面について混乱しています.100万人のユーザーがいる場合、VIEW
これに a を使用するのはかなり悪い考えです. しかし一方で、私がこれに を持っているなら、私は毎回SELECT
すべての's で全体を使用するために自分自身を保存します。JOIN
VIEW
VIEW
では、行為はどのように正確に行われますか?WHERE
単純な SUBQUERY として、またはを選択するときにを追加すると、より最適化されますVIEW
か?
それが SUBQUERY のように機能する場合、STORED PROCEDURE
パラメーター付きの は常に よりも優れているとVIEW
思います(WHERE
異なるパラメーターがある場合)?
情報をありがとう