当需要视图的字段子集时,mysql查看性能

时间:2013-07-10 18:35:03

标签: mysql database-performance

我想创建一个数据库视图,其中包含一些要计算的昂贵字段。我想知道如果不需要昂贵的油田,成本是多少。但是,我发现事实并非如此,而且成本是一样的。

作为玩具示例,我有一个包含用户信息的表格。我在这个表上有一个视图,它返回id,name和名字与我一样的用户数。

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;

我现在正在对表格进行两次查询。在第一个中我选择所有字段,在第二个中我只选择单个字段(名称)。在两者中我限制了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)

因此可以看出,性能是相同的,并且在缺失的字段上没有进行优化。这是预期的行为吗?有什么暗示吗?

感谢。

1 个答案:

答案 0 :(得分:0)

大多数CPU周期都浪费在行和计算的选择上(在两种情况下都是相同的),而不是数据传输本身。如果您的每个表的行不占用几千字节的数据而不是name字段中的几个字节,那么您将无法看到快速网络连接的差异。