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ますよね? しかし、私がそれを行うと、正確にはどうなりますか?VIEWWHERE id = 3
すべてのユーザーをVIEW静止させ、データ全体を削除して、 のみを表示しますか? それとも、のみが選択されるように最適化されますか?SELECTid = 3VIEWuser.id = 3
私はこれのパフォーマンス面について混乱しています.100万人のユーザーがいる場合、VIEWこれに a を使用するのはかなり悪い考えです. しかし一方で、私がこれに を持っているなら、私は毎回SELECTすべての's で全体を使用するために自分自身を保存します。JOINVIEW
VIEWでは、行為はどのように正確に行われますか?WHERE単純な SUBQUERY として、またはを選択するときにを追加すると、より最適化されますVIEWか?
それが SUBQUERY のように機能する場合、STORED PROCEDUREパラメーター付きの は常に よりも優れているとVIEW思います(WHERE異なるパラメーターがある場合)?
情報をありがとう