【问题标题】:MySQL - Use min function or limit an order-by queryMySQL - 使用 min 函数或限制 order-by 查询
【发布时间】:2013-10-19 23:16:46
【问题描述】:

我正在编写查询以查找具有最低价格的产品。 这是我尝试的两个查询:

select min(price) from products

select price from products order by price limit 1

第一个返回19.950000762939453,第二个返回19.95,这是准确的值。所以我的问题是,这两个查询有什么区别?为什么第一个很奇怪?!哪个对这项任务有更好的表现?

提前致谢。

【问题讨论】:

    标签: mysql sql-order-by limit min


    【解决方案1】:

    price 的数据类型可能是浮点数,根据定义不准确。

    如果您使用像decimal 这样的定点数据类型,它将是19.95

    您可以阅读它in the doc

    【讨论】:

    • 我检查了,是的,类型是浮点数。那么您认为这两个查询中哪一个会更快?
    • 通过explain select ...亲自查看。
    【解决方案2】:

    min 具有更好的性能,根据奇怪的值 - 你应该阅读floating numbers are stored in memory/db,它们是“四舍五入”的

    如果您存储实际价格 - 使用 DECIMAL 类型,它将正常工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-03-09
      • 2013-07-07
      • 1970-01-01
      • 2023-03-14
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2020-05-15
      相关资源
      最近更新 更多