ORDER BY(< 1秒)を使用せずにクエリが正常に動作します。しかし、それを持つ20代ほどかかります: 私はすべての列sql orderbyは内部自己結合クエリを破棄します
SELECT SQL_NO_CACHE * FROM file_results data
INNER JOIN file_result_filters gender ON data.id = gender.file_result_id AND gender.filter = 'filter1' AND gender.value = 'male'
INNER JOIN file_result_filters age ON data.id = age.file_result_id AND age.filter = 'filter2' AND age.value > 20
INNER JOIN file_result_filters height ON data.id = height.file_result_id AND height.filter = 'filter3' AND height.value > 150
ORDER BY age.value DESC
file_resultsテーブルの上に単一列のインデックスを持っている:
id, ...
file_result_filters:
id, file_result_id, filter, value
面白いことは、それがときに動作することです私は3の代わりに2つの内部結合しか持たない
テーブルのサイズはどれくらいですか? – WillardSolutions
まず、そのステートメントのEXPLAINの出力を確認します。 – CBroe
配信されたテーブルを試して、フィルタリングして年齢を指定し、値を注文すると最適な実行が強制される可能性があります。また、実行速度を上げる必要がある複数のcolumnindex(フィルタ、値)が必要です –