【发布时间】:2013-07-14 08:18:49
【问题描述】:
我总是从 SQL 专家那里听到,在 SELECT 语句中使用“*”号效率不高,最好列出所有字段名称。
但我个人认为在向表中添加新字段然后相应地更新所有存储过程时,它并不高效。
那么使用 '*' 的优缺点是什么?
谢谢。
【问题讨论】:
我总是从 SQL 专家那里听到,在 SELECT 语句中使用“*”号效率不高,最好列出所有字段名称。
但我个人认为在向表中添加新字段然后相应地更新所有存储过程时,它并不高效。
那么使用 '*' 的优缺点是什么?
谢谢。
【问题讨论】:
一般来说,使用SELECT * 不是一个好主意。
优点:
SELECT * 的位置
缺点:
VARBINARY 列,其中每行包含 200k。您只需要在 一个 位置为单个记录提供此数据 - 使用 SELECT * 您最终可以每 10 行返回 2MB 您不需要
SELECT *,您将获得连接中的所有列
【讨论】:
*,然后才能验证所有字段。因此,如果select 包含一个*,它会被添加到 field_list。就性能而言,优化是最小的,但节省了额外的函数调用。我真的找不到 Oracle 版本的 MySQL 源代码(我也没有真正费心去挖掘它),但在 github 中找到了 twitter 的版本。看看https://github.com/twitter/mysql/blob/master/,sql/sql_select.ccJOIN::prepare 在第 498 行和第 554 行之间以及setup_wild 在sql/sql_base.cc 中的第 7846 行。
优点:
select *会更短
缺点:
【讨论】: