假设我有一个名为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在使用函数时是否知道如何优化查询,因为众所周知,连接比子查询更快?
答案 0 :(得分:0)
子查询总是慢于连接。因此,您不应该使用函数来处理这种容易的情况。您 可以使用此查询。
SELECT c.id, count(cb.id) FROM customers c JOIN customer_bills cb ON c.id = cb.customerId group by c.id;