使用函数时MySQL Join或Subquery?

时间:2014-12-03 10:22:30

标签: mysql

假设我有一个名为customers的表和一个名为customer_bills

的表

我想计算客户账单。

我有一个名为countBills的函数,它得到(int)input并在其中返回(SELECT count(id) FROM customer_bills WHERE customerId = input)

当我使用SELECT id, countBills(id) FROM customers

发生了什么事?

SELECT id, (SELECT COUNT(id) FROM customer_bills) FROM customers

或者是SELECT id, count(customer_bills.id) FROM customers JOIN customer_bills ON customer.id = customer_bills.customerId

简而言之, MySQL在使用函数时是否知道如何优化查询,因为众所周知,连接比子查询更快?

1 个答案:

答案 0 :(得分:0)

子查询总是慢于连接。因此,您不应该使用函数来处理这种容易的情况。您 可以使用此查询。

SELECT c.id, count(cb.id) FROM customers c JOIN customer_bills cb ON c.id = cb.customerId group by c.id;