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
ですか?