計算にコストのかかるフィールドがいくつかあるデータベース ビューを作成したいと考えています。コストのかかるフィールドが不要な場合のコストを確認しようとしています。しかし、そうではなく、コストは同じであることがわかりました。
おもちゃの例として、ユーザー情報を含むテーブルがあります。このテーブルには、ID、名前、および名前が私のようなユーザーの数を返すビューがあります。
create view same_name as
select
id,
name,
(select count(*) from users as u2 where u2.name = u1.name) as same_name_count,
from users as u1;
現在、テーブルに対して 2 つのクエリを実行しています。最初の例ではすべてのフィールドを選択し、2 番目の例では単一のフィールド (名前) を選択しています。両方で、ID を制限します。
mysql> select * from same_name where id = 2;
+----+--------+-----------------+
| id | name | same_name_count |
+----+--------+-----------------+
| 2 | meidan | 125 |
+----+--------+-----------------+
1 row in set (12.15 sec)
mysql> select name from same_name where id = 2;
+--------+
| name |
+--------+
| meidan |
+--------+
1 row in set (12.15 sec)
したがって、パフォーマンスは同じであり、欠落しているフィールドでは最適化が行われていないことがわかります。これは予想される動作ですか?これに関するヒントはありますか?
ありがとう。