Допустим, у меня есть таблица под названием customers
и таблицу с именем customer_bills
MySQL Join или Subquery при использовании функций?
И я хочу рассчитывать счета клиента.
У меня есть функция, которую я создал, называется 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, как оптимизировать запрос при использовании функции, как известно, что присоединяется быстрее, чем подзапросы?
Первый вблизи от реальности, чем второй. Но моя рекомендация - не использовать такую функцию! Функция может выполнять некоторые вычисления, но не вставлять в нее такие подзапросы - иначе результат будет медленным и тяжелым запросом. – i486