知道它将返回null运行查询是不是很糟糕?

时间:2015-11-10 05:31:17

标签: php mysql optimization

我有一个订单实体,在执行工作时会运行一些状态。每次请求页面时,后端都会返回所有当前可能或可能不可用的关联数据,如JSON。

基本上,它与请求的URL相同,但是根据订单状态切换模板,后端始终运行相同的方法来检索数据。根据订单状态,某些数据可能为空。

因此,例如,预订是一种状态,表明订单尚未最终确定以进行处理。因此,没有进行任何工作。如上所述,假设后端始终运行相同的查询来获取数据。它可能会返回“order_information”,“work_performed”和“comments”。一般来说,即使在预订中无法执行任何工作,执行“work_performed”查询也会造成损失或成本高昂吗?它当然总是在预订阶段返回null。提交订单后,最终会有订单数据,这样我就不必在后端写入额外的逻辑。并不是说编写它是一件麻烦事,但如果没有必要,那么它会使代码更短。

否则,我想我只需要在后端有条件地返回数据。

1 个答案:

答案 0 :(得分:0)

如果结果集中的字段可能为空值

,则可以使用COALESCE

以这三个为例

COALESCE(MAX(bids.gold_bid),0) AS max_bid

在此示例中,如果bid.gold_bid的最大值没有值(null),则返回0作为max_bid的值

COALESCE(bidder.name,'No Bidders') AS highest_bidder

在此示例中,如果没有人对该项目进行投标,则会返回“无投标人”作为出价最高者的名称

COALESCE(COUNT(bids.gold_bid),0) AS number_of_bids

在此示例中,如果未找到出价(空值),则返回0作为出价数