【问题标题】:What is wrong with this SELECT query?这个 SELECT 查询有什么问题?
【发布时间】:2011-06-07 07:11:23
【问题描述】:

我在一个互联网论坛上发现了这个帖子:

您会发现自己是那些新奇的 Web 应用程序开发人员之一,他们实际上对数据库知之甚少,也没有发现任何问题

SELECT * FROM `tbl_products` ORDER BY `product_times_bought` DESC LIMIT 0, 500

我是数据库新手,这对我来说似乎是一个有效的查询。然而有人说在实践中使用这样的查询有问题。我不知道为什么:效率?鲁棒性?这个查询有什么问题?

【问题讨论】:

  • 运行查询时告诉您的错误是什么?查询的语法正确
  • 语法没有错。您没有向我们提供所有必要的信息来回答您的问题。
  • @lunchmeat317 在这种情况下误用 select * 是怎么回事? @Samhan 说这个查询给了他一个错误,但 sintax 是正确的。另一件事是,最佳做法是选择您想要的列而不是所有列。
  • @dotore Samhan 从未说过他从中得到了错误。他确实说他在一个互联网论坛上看到了一份声明,并想知道它有什么问题。此示例中的“错误”不是语法错误;我在上面发布的链接中指定了“错误”。

标签: mysql select


【解决方案1】:

没有看到任何语法错误,但它的 * 被认为是不好的做法。问题是,您无法控制数据库返回哪些列,而且它会返回所有列(浪费带宽)。它可能还有其他问题,例如破坏重新创建表的顺序,如果您需要的列不存在,您将不会在选择查询本身中捕获该错误,而且阅读它不会告诉您您实际需要哪些列(大多数情况下您不需要所有列)。因此,您应该询问您需要的特定列,而不是通用 *。

各位,还有其他不好的做法或建议吗?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2011-10-13
    • 2010-09-07
    • 2010-10-04
    相关资源
    最近更新 更多