1

MyISAM データベースを使用する SQL クエリを実行しているときに、パフォーマンスの問題に直面しています。

これを簡単に説明すると、3 つのテーブルがあります:
テーブル: A (エンジン MyISAM. 合計レコード: 1847)
テーブル: B (エンジン MyISAM. 合計レコード: 1110)
テーブル: C (エンジン MyISAM. 合計レコード: 57867)

現在、実行中のクエリが実行されるまでに 623 秒かかっており、サーバーからの接続 (localhost の場合も同様) が中止されることがあります。

以下は私が実行しているクエリです:

SELECT MATCH(A.title, A.description) AGAINST('Computer Graphic Artist') AS 'Score',
    A.code AS 'Code',
    B.cluster AS 'Cluster',
    B.pathway AS 'Pathway',
    A.title AS 'Role',
    A.description AS 'Description'
FROM B
INNER JOIN A ON B.code = A.code
INNER JOIN C ON B.code = C.code
WHERE MATCH(A.title, A.description) AGAINST('Computer Graphic Artist')
  OR MATCH(B.cluster, B.pathway, B.descripton) AGAINST('Computer Graphic Artist')
  OR MATCH(C.title) AGAINST('Computer Graphic Artist')
ORDER BY Score DESC, B.cluster ASC

また、 Pastieを参照することもできます (この SQL が見にくい場合)。該当する場合はいつでも FULLTEXT プロパティを追加しました。

注: テーブル A、B、および C にも重複レコードはほとんどありません。

高速出力のためにこの SQL を最適化する方法を教えてください。

4

1 に答える 1