如何设计索引/查询以避免简单MySQL查询中的文件排序?

如何设计索引/查询以避免简单MySQL查询中的文件排序?,mysql,indexing,query-optimization,filesort,Mysql,Indexing,Query Optimization,Filesort,我有一个表entrytable,其中包含列数据,用户名,状态,状态(垃圾邮件)用户,状态(垃圾邮件)系统和文本 我想从具有以下特定值的行中选择列文本的内容:username,status,status\u spam\u user,status\u spam\u system。因为这会导致一个长长的条目列表(>30000),所以我想限制匹配行的数量。在此之前,匹配行应按列datum排序 SELECT text FROM entrytable WHERE user = 'username' &

我有一个表
entrytable
,其中包含列
数据
用户名
状态
状态(垃圾邮件)用户
状态(垃圾邮件)系统
文本

我想从具有以下特定值的行中选择列文本的内容:
username
status
status\u spam\u user
status\u spam\u system
。因为这会导致一个长长的条目列表(>30000),所以我想限制匹配行的数量。在此之前,匹配行应按列
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
我在表中添加了两个索引:

  • 索引_基准(基准)
  • 索引\u status\u mit\u spam(用户、状态、状态\u spam\u用户、状态\u spam\u系统)
对于此查询,使用索引
index\u status\u mit\u spam
。由于索引不包含列
数据的信息
,因此必须单独进行排序(即文件排序)。是否可以设计我的查询/索引,使其对
WHERE
以及
ORDER BY
有用?

上添加索引(用户、状态、数据)

状态\垃圾邮件\用户/状态\垃圾邮件\系统上的索引无法使用,因为存在或条件(该索引一直使用到状态部分),必须先使用索引的所有以前部分,然后才能通过索引满足订单要求。

请发布解释计划。。