让MySQL使用索引进行排序,但不在WHERE子句中?
我有一个查询,可以简化为让MySQL使用索引进行排序,但不在WHERE子句中?,mysql,Mysql,我有一个查询,可以简化为 SELECT * FROM table WHERE field > 5 ORDER BY field DESC 其中字段>5与一半以上的记录匹配。我在字段上有一个索引,但是MySQL没有使用它,因为太多的记录满足了这个条件。是否可以只对订单使用索引,而不使用WHERE子句?我想简单的答案是:即使可能,这样做也没有意义。数据库优化器根据索引是否会提高性能来决定何时使用索引。为什么索引对排序有用?你会取得什么成就?你知道索引是如何工作的吗?为什么索引对过滤不起作用?
SELECT *
FROM table
WHERE field > 5
ORDER BY field DESC
其中
字段>5
与一半以上的记录匹配。我在字段
上有一个索引,但是MySQL没有使用它,因为太多的记录满足了这个条件。是否可以只对订单使用索引,而不使用WHERE
子句?我想简单的答案是:即使可能,这样做也没有意义。数据库优化器根据索引是否会提高性能来决定何时使用索引。为什么索引对排序有用?你会取得什么成就?你知道索引是如何工作的吗?为什么索引对过滤不起作用?@GolezTrol在某些情况下,如果数据的选择性很低,优化器可以避免使用索引。@N.B.索引不会加快排序吗?@Linksku-不一定。MySQL跳过使用索引,因为有时不用索引工作会更快。