Я сомневаюсь в производительности «двумя или более отдельными командами SQL» или «1, но используя команду« join »SQL».Быстрее ли использовать два отдельных оператора SQL или один оператор SQL с JOIN?
Вот вещь:
К примеру, у меня есть две таблицы: post
, user
post
имеет user_id, указывающий это сообщение выдается некоторым другим пользователем в user
и я собираемся извлечь как сообщение, так и имя пользователя.
Я могу либо
SELECT * FROM `post` LEFT JOIN `user` on post.user_id = user.id WHERE 1
или
$rows = $db->sql("SELEFT * FROM `post` WHERE 1") for $row in $rows: $db->sql("SELECT * FROM `user` WHERE id = $row['user_id']")
мне интересно, какой из них будет иметь более высокую производительность?
А что, если у меня есть 3 или более таблицы, чтобы присоединиться, какой путь будет лучше (с точки зрения производительности)?
Существует (как правило, небольшой, но не нулевой) штраф за выполнение при использовании LEFT JOIN (или RIGHT JOIN или FULL JOIN) по сравнению с INNER JOIN. Если вы можете, избегайте ЛЕВЫЙ ПРИСОЕДИНЕНИЕ и используйте только JOIN. У вас есть сообщение, для которого нет записи пользователя? Если нет (и вы не должны), то подходящим является INNER JOIN. –