entrytable、、、、、およびの列datumをusername持つstatusテーブルがstatus_spam_userありstatus_spam_systemますtext。
username、status、 、status_spam_userの特定の値を持つ行から、列テキストの内容を選択したいstatus_spam_system。これによりエントリのリストが長くなる可能性があるため (>30'000)、一致する行の数を制限したいと考えています。その前に、一致する行を column で並べ替える必要がありますdatum。
SELECT text
FROM entrytable
WHERE user = 'username' &&
`status` = '1' && (
    `status_spam_user` = 'no_spam'
    || (
        `status_spam_user` = 'neutral' &&
        `status_spam_system` = 'neutral'
    )
)
ORDER BY datum DESC
LIMIT 6430 , 10
テーブルに 2 つのインデックスを追加しました。
- index_datum (データム)
 - index_status_mit_spam (ユーザー、ステータス、status_spam_user、status_spam_system)
 
このクエリでは、インデックスindex_status_mit_spamが使用されます。インデックスには列の情報が含まれていないためdatum、ソートは個別に行う必要があります (つまり、ファイルソート)。WHEREクエリ/インデックスを、だけでなく にも役立つように設計することは可能ORDER BYですか?