次のクエリを高速化する方法はありますか?実行に約6秒かかります。各テーブルには約1000個のレコードしか含まれていないので、巨大ではありません。私は複数のLEFT JOINを追加するとMySQLクエリー速度の結合
SELECT c. * , q.qualification_name, CONCAT(u.firstname, ' ', u.lastname) AS name, v.venue_name, v.address_town
FROM p_courses c
LEFT JOIN p_qualifications q ON c.qualification_name = q.ref
LEFT JOIN p_users u ON c.instructor_number = u.instructor_number
LEFT JOIN p_venues v ON c.venue_token = v.token
WHERE (
c.status = 'completed'
OR c.status = 'confirmed'
)
は、上記のクエリが動作し、要求に応じて、すべてのデータを取得し、それだけで、すぐに長い時間がかかります。
ありがとうございました。
EDITED。クエリの前にEXPLAIN追加
は...これを返す
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE c ALL NULL NULL NULL NULL 1288 Using where
1 SIMPLE q ALL NULL NULL NULL NULL 21
1 SIMPLE u ALL NULL NULL NULL NULL 518
1 SIMPLE v ALL NULL NULL NULL NULL 669
申し訳ありませんが、私はそれをどのように解釈するかは非常にわかりません。
申し訳ありませんが、私はフォーマットが面倒だと知っています。 – Rob
あなたはあなたの質問の中でそれを編集し、そこに書式を修正するべきですが、何よりもそれをチェックし、それから何が分かるかを見てください。私が言ったように、あなたが参加しているフィールドにインデックスが必要です//どこで実行するか、インデックスを追加し、それが役立つかどうかを確認してください。 1つの説明をダンプしないで、私が提案したものを試してください:) – Nanne
フォーマットが修正されました。だから私はこれらのフィールドにインデックスを追加する必要があるようです。 – Rob