0
これは私の問題です。私は正しい項目を取得するために複数の結合を選択しています。複数の結合でMySQLクエリを高速化
どのように私はこれをスピードアップできるか知っていますか?それは約19秒かかりますか?
ここにクエリがあります。
SELECT
t1.id AS HostingID,
t5.date_id AS DateRelid
FROM
tblhosting AS t1
INNER JOIN tblcustomfieldsvalues AS t2 ON t1.id = t2.relid
INNER JOIN tblcustomfields AS t3 ON t2.fieldid = t3.id
INNER JOIN tbl_course AS t4 ON t1.packageid = t4.course_pid
INNER JOIN tbl_dates AS t5 ON t4.course_title = t5.date_coursetitle
WHERE
t3.fieldname LIKE "%Course Date%" AND
t1.id = "$hostingid" AND
t1.userid = "$userid" AND
t5.date_coursedisplay = t2.value AND
t5.date_courselocation = t4.course_location
ORDER BY t5.date_id DESC
LIMIT 0 , 1
任意の助けをいただければ幸いですので、私は、MySQLとの最大のではありませんよ!
ありがとうございます!
Anが私のSQL説明:
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE t1 const PRIMARY,serviceid,userid,productid PRIMARY 4 const 1 Using temporary; Using filesort
1 SIMPLE t5 ALL NULL NULL NULL NULL 20744
1 SIMPLE t3 ALL PRIMARY NULL NULL NULL 4101 Using where; Using join buffer
1 SIMPLE t2 ref fieldid_relid fieldid_relid 8 nextstep_next.t3.id,const 1 Using where
1 SIMPLE t4 ALL NULL NULL NULL NULL 664 Using where; Using join buffer
さらに情報を提供してください:テーブルの構造、おおよその行数? – Loufylouf
'T1 - ID \tユーザーID \t受注\tのPackageID \tサーバ\t regdate - 16000 rows' 'T2 - フィールド識別子RELID値 - 8万Rows' ' T3 - \t ID \tタイプ\t RELID \tフィールド名\t FIELDTYPE \t説明\t fieldoptions \t regExprの\t adminonly \t必要\t showorder \t showinvoice \t sortorde - 5000 rows' 'T4 - \t COURSE_TITLE \tクールをCourse_IDに\t全文se_location \t course_pid \t course_venue \t course_note - 500 rows' 'T5 - フルテキスト\t date_id \t date_select \t date_courselocation \t date_coursetitle \t date_coursedisplay - これは、助けカスタムテーブルとのWHMCSデータベースを願ってい@Loufylouf 21,000 rows' –
読める形式は次のようになりますこれよりも良い方法です。適切にインデントされた 'CREATE TABLE'と同様に、これは異なるタイプのカラムを提供するだけでなく、テストのためにテーブルを素早く作成する方法を提供します。そしてそのような情報は本当に重要なので、あなたの質問にコメントよりもそれを追加する方がいいでしょう。 – Loufylouf