可能是重复问题:
为什么SELECT *被认为是有害的?
这可能是一个数据库初学者的问题。
我们的应用程序有一个像下面这样的表:
TABLE WF
Field | Type | Null | Key | Default | Extra |
+--------------------+-------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| children | text | YES | | NULL | |
| w_id | int(11) | YES | | NULL | |
| f_id | int(11) | YES | | NULL | |
| filterable | tinyint(1) | YES | | 1 | |
| created_at | datetime | YES | | NULL | |
| updated_at | datetime | YES | | NULL | |
| status | smallint(6) | YES | | 1 | |
| visible | tinyint(1) | YES | | 1 | |
| weight | int(11) | YES | | NULL | |
| root | tinyint(1) | YES | | 0 | |
| mfr | tinyint(1) | YES | | 0 | |
+--------------------+-------------+------+-----+---------+----------------+
这个表格预计会有超过一千万条记录。架构不会有太多变化。我需要检索 f_id、children、status、visible、weight、root、mfr 这些列。
哪种方法可以更快地检索数据?
1)
Select * from WF where w_id = 1 AND status = 1;
我将在应用层中删除不必要的列。2)
Select children,f_id,status,visible,weight,root,mfr from WF where w_id = 1 AND status = 1;
在查询中预先选择了不必要的列,因此无需删除。是否有任何真实的基准测试可以证明哪种方法更快?我知道有人说选择*是邪恶的,但是在尝试获取整个块而不是检索选择性列时,MySQL是否会更快地响应?
我正在使用 MySQL 版本:5.1.37-1ubuntu5(Ubuntu),应用程序是 Rails3 应用程序。