PHP MYSQLのタイムアウト問題
-
19-09-2019 - |
質問
私はこのようなSQLクエリを持っています。 IAMは、私のPHPファイルかかわらず、それを実行すると、エラーが時間を与えます。 PHPのmyadminというthoruhg同じクエリを実行している場合しかし、それは秒以内に結果が得られます。
SELECT
cake_apartments.id,
cake_apartments.Headline,
cake_apartments.Description,
cake_apartments.photoset_id,
cake_apartments.Rental_Price,
cake_apartments.Bedrooms,
cake_apartments.Bathrooms
FROM
cake_apartments,cake_neighborhoods
WHERE
(cake_apartments.Rented = 0)
AND
(cake_apartments.status = 'Active')
ORDER BY
cake_neighborhoods.Name DESC
私は時間を増加しても問題が解決していることを知っています。しかし、私はこのクエリのために30秒以上を費やす必要はありません。
解決
問題は、あなたが2つのテーブル間の関係を特定していないです。 phpmyadminのは、MySQLサーバが素早く行の送信を停止することができますLIMIT句を追加するためには、タイムアウトの近くになったことがない、phpmyadminの中ですぐに返します。
あなたはクエリはちょうどマンションが借りて、アクティブにされていない行を検索していると思いますが、何が本当に取得していると、その行の数*データベースの地区の数。
でありますこのようなあなたのクエリを書き換えます:
SELECT
cake_apartments.id,
cake_apartments.Headline,
cake_apartments.Description,
cake_apartments.photoset_id,
cake_apartments.Rental_Price,
cake_apartments.Bedrooms,
cake_apartments.Bathrooms
FROM
cake_apartments
JOIN
cake_neighborhoods
ON
cake_neighborhoods.id = cake_apartments.neighborhood_id
WHERE
(cake_apartments.Rented = 0)
AND
(cake_apartments.status = 'Active')
ORDER BY
cake_neighborhoods.Name DESC
私は、私はそれが間違って得た場合、あなたはそれを調整する必要がありますように、2つのテーブルは、ON句にどのように関連しているかで推測することを。 このノート
他のヒント
あなたが唯一の一致が存在する行をしたい場合は、
、あなたのSQL JOINはINNERを含める必要があります。
のcake_neighborhoods.cake_apartments_id がのcake_neighborhoods のテーブルであなたの外部キーの名前であるならば、私は次のようにクエリを書き直す示唆しますSELECT
cake_apartments.id,
cake_apartments.Headline,
cake_apartments.Description,
cake_apartments.photoset_id,
cake_apartments.Rental_Price,
cake_apartments.Bedrooms,
cake_apartments.Bathrooms,
cake_neighborhoods.Name
FROM
cake_apartments,cake_neighborhoods
WHERE
(cake_apartments.Rented = 0)
AND
(cake_apartments.status = 'Active')
AND
cake_neighborhoods.cake_apartments_id = cake_apartments.id
ORDER BY
cake_neighborhoods.Name DESC
所属していません StackOverflow