Mysql 按SQL查询排序

Mysql 按SQL查询排序,mysql,sql,performance,sql-order-by,multiple-columns,Mysql,Sql,Performance,Sql Order By,Multiple Columns,这是在线门户的产品表结构。 目前产品表有超过100万条记录 我在状态和交付id上创建了索引。 我在按状态描述、交货id ASC列出产品时出现性能问题 完整查询: SELECT product_name FROM product ORDER BY status DESC, delivery_id ASC LIMIT 10 如何改进此查询以更快地执行?如下所述: 在某些情况下,MySQL无法使用索引来解析ORDER BY,尽管它仍然使用索引来查找与WHERE子句匹配的行。这些情况包括: [del

这是在线门户的产品表结构。
目前产品表有超过100万条记录

我在状态和交付id上创建了索引。
我在按状态描述、交货id ASC列出产品时出现性能问题 完整查询:

SELECT product_name FROM product ORDER BY status DESC, delivery_id ASC LIMIT 10
如何改进此查询以更快地执行?

如下所述:

在某些情况下,MySQL无法使用索引来解析
ORDER BY
,尽管它仍然使用索引来查找与
WHERE
子句匹配的行。这些情况包括:

[deletia]

  • 您可以将
    ASC
    DESC
    混合使用:

    SELECT * FROM t1 ORDER BY key_part1 DESC, key_part2 ASC;
    从t1顺序中选择*按键部分1DESC、键部分2ASC

请粘贴解释计划按优化查看订单文档是否有解决方案?@Basilevs:一个选项是以不同方式定义
状态
交付id
,因此,所需的排序不需要按相反的方向对它们进行排序。我们可以创建反向索引而不更改列定义吗?@Basilevs:我上面的建议不会影响“列定义”(就模式而言)——只影响其值的语义定义。至于创建“反向索引”,我不能完全确定你的意思:MySQL可以在任意方向遍历索引,它只是不能在一个方向遍历一个关键部分,在相反方向遍历另一个关键部分。@RajanRaj:如果可能的话,我真的希望你尝试这种方法。