サブクエリを導入すると、このクエリにオーバーヘッドがあるのではないかと思います。
SELECT p.id_product
FROM product p
JOIN reservation_product rp ON (p.id_product = rp.id_product)
JOIN reservation r ON (rp.id_reservation = r.id_reservation)
WHERE r.id_company =
-- **Subquery in question**
(SELECT r_inn.id_company FROM reservation r_inn WHERE r_inn.id_reservation = 56)
AND r.status = 'active'
-- Floor
AND r.checkout > '2012-05-30 13:00:00'
-- Ceil
AND r.checkin < '2012-05-30 15:00:00'
AND r.id_reservation <> 56
AND r.release_time IS NULL
ユーザーに会社のIDを直接設定して、次のようなWHEREを持つように要求できます。
WHERE r.id_company = 1
最初の例で示したサブクエリの導入でこれを回避しようとしていますが、パフォーマンスのオーバーヘッドが心配です。
これは、最初のクエリの EXPLAIN です (これを手伝ってください。まだ EXPLAIN 句を取得していません)。
そして、ハードコードされたものの EXPLAIN: