MySQLクエリを最適化するために必要な提案
-
09-10-2019 - |
質問
PHPでパラメーター化されたクエリを使用しています。次の2つのクエリがあります。
SELECT username,question_text
FROM questions,users
WHERE questions.question_id = 4 AND questions.user_id = users.user_id
と
SELECT username, post_text
FROM posts,users WHERE posts.question_id = 4
AND posts.user_id = users.user_id ORDER BY posts.post_id ASC
要するに、質問は「投稿」テーブルで議論されており、質問_IDによって参照されています。
PHPコードには冗長コードがあります。なぜなら、これらの2つのクエリから必要な結果を取得するためにデータベースを一度クエリするのに十分なMySQLがわからないからです。
私がそれをうまくやっていて、私のPHPコードの冗長な部分に対処する方法はありますか、それともこれを達成するより良い方法はありますか?
解決
Where句の列を一致させる代わりに結合を使用します
SELECT username,question_text
FROM questions INNER JOIN users on questions.user_id = users.user_id
WHERE questions.question_id = 4
と
SELECT username, post_text
FROM posts INNER JOIN users on posts.user_id = users.user_id
WHERE posts.question_id = 4
ORDER BY posts.post_id ASC
他のヒント
2つのクエリはまったく問題ありません。いくつかのテーブルからの出力を組み合わせることは、それほどきれいではありません。
Whereで使用するすべてのフィールドにすべての結合されたインデックスがあるかどうかを確認するだけで、非常に高速になります。
所属していません StackOverflow