複数テーブルクエリの最適化


開発の際に、データベースの検索性能の問題に遭遇しました。各クエリを出力する時間がかかったら、私の一つのマルチテーブル接続クエリは多くの時間がかかりました。インターネットで性能最適化の方法を調べましたが、ほとんどの案は表の接続フィールドにインデックスを作ることです。
    私の3つの表は検索文に接続します。
                
SELECT  count(DISTINCT(c.pin)) as cnt
FROM jd as a, jd_org as b, port_log as c
WHERE
a.orgid = b.id
AND c.pin = a.pin
AND c.loginTime < #endTime#
AND c.loginTime >= #beginTime# 
    そこで私は4つの接続フィールドにインデックスを作成しました。元のクエリは3349 msで、すぐに40 msに下がりました。インデックス作成の最適化効果がよさそうです。大学の時にデータベースの概論を勉強していた時はインデックスに直感的な感じがしませんでした。