存在使用select *
的问题列表。
1 - 输出
如果您的客户希望某些字段,并更改了表的布局的一致性,select *
会改变,如果底层表改变其输出,破坏你的客户端代码。
2 - 网络性能
如果你只需要输出中的所有领域的一个子集,select *
将通过跨网发送不需要的数据浪费网络带宽。
3A - 数据库性能
在简单的表格select *
可能不降低性能,但如果你有BLOB字段(即你不感兴趣)select *
将获取那些为好,查杀性能
3B - 数据库服务器
如果MySQL需要使用临时表的内存使用情况,select *
将征税服务器,磁盘,内存和CPU通过使MySQL的存储在内存中更多的数据额外费用。
3C - 在InnoDB上覆盖索引不能用于
在InnoDB的,如果你选择被索引的字段,MySQL需要从来没有读取实际表中的数据,它只是从索引读取信息直,select *
杀这优化。
4 - 代码
select *
清晰给人一种查询没有资料上的字段将被从服务器检索的读者。 select name, address, telephone from ...
可以立即清楚我们正在处理的数据。
如果你的表是在祖鲁语,你甚至可以做
select
igama as name
ikheli as address
....
这比不讲祖鲁人的99.7%,原来的名字更加有用。
5 - 不要破解代码,工艺也
选择*仅仅是一个快速的黑客攻击,使东西的工作。
但是,当你编写代码时,你应该知道你在做什么,明确地说明,选择你需要的,如果需要的话,使用别名给字段赋予有意义的名字。
调整你的代码,只选择你所需要的。
如果我在代码审查中看到select *
,我将它标记为看不见,因为它是一种代码异味。
希望这会有所帮助。
[点击这里查看上述问题的答案] [1] [1]:http://stackoverflow.com/questions/321299/what-is-the-reason-not-to -use-select – K6t