通过 * 选择所有列和在 SQL 查询中指定所有列名来检索数据有啥区别? [复制]
Posted
技术标签:
【中文标题】通过 * 选择所有列和在 SQL 查询中指定所有列名来检索数据有啥区别? [复制]【英文标题】:What is the difference in selecting all the columns by * and by specifying all column names in SQL query to retrieve data? [duplicate]通过 * 选择所有列和在 SQL 查询中指定所有列名来检索数据有什么区别? [复制] 【发布时间】:2018-12-18 05:50:51 【问题描述】:假设我有一个包含 id, name, contact
列的表。
获取数据有什么区别
SQL 查询 #1:
SELECT *
FROM table
和 SQL 查询 #2:
SELECT id, name, contact
FROM table
【问题讨论】:
目前 - 没有区别。但是,如果您稍后碰巧在表中添加了一个 blob 列,其中包含 很多 二进制数据(图像等) - 那么查询 #1 将变慢到爬行(因为它也会正在检索该 blob 列),而 #2 将保持快速 除了 Marc 上面的评论,阅读重复链接还有其他一些原因不在你的代码中使用SELECT *
。
【参考方案1】:
SELECT * FROM table - 它会选择所有列,即使这些列是否有用。 如果您选择所有列而不是一些内存开销和耗时。 例如,假设您选择了所有列并存储在某个 java 对象中,那么这没有用,而不是选择那些对您的操作有用的列。
【讨论】:
我正在通过两个查询检索所有数据。所有数据都将被使用。但 DBA 表示在性能和数据返回方面存在差异。所以很好奇这个问题 从 DBA 的角度来看,他们还建议根据查询执行成本添加查询提示。如果您使用的是 todd,则可以通过 CTl+E 检查执行成本以上是关于通过 * 选择所有列和在 SQL 查询中指定所有列名来检索数据有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何利用select查询表中指定某一行($num)的所有信息?