Ada situasi yang mengharuskan memiliki kueri sangat besar bergabung dengan beberapa tabel bersama dengan pernyataan sub pilih di dalamnya untuk menghasilkan hasil yang diinginkan.
Pertanyaan saya adalah, haruskah kita mempertimbangkan menggunakan beberapa kueri yang lebih kecil dan membawa operasi logis ke dalam lapisan aplikasi dengan meminta DB dalam lebih dari satu panggilan atau lebih baik memiliki semuanya sekaligus?
Sebagai contoh, pertimbangkan pertanyaan berikut:
SELECT *
FROM `users`
WHERE `user_id` IN (SELECT f2.`friend_user_id`
FROM `friends` AS f1
INNER JOIN `friends` AS f2
ON f1.`friend_user_id` = f2.`user_id`
WHERE f2.`is_page` = 0
AND f1.`user_id` = "%1$d"
AND f2.`friend_user_id` != "%1$d"
AND f2.`friend_user_id` NOT IN (SELECT `friend_user_id`
FROM `friends`
WHERE `user_id` = "%1$d"))
AND `user_id` NOT IN (SELECT `user_id`
FROM `friend_requests`
WHERE `friend_user_id` = "%1$d")
AND `user_image` IS NOT NULL
ORDER BY RAND()
LIMIT %2$d
Apa cara terbaik untuk melakukannya?