如何让 mysql 查询使用特定索引?
How to get a mysql query to use a specific index?
SELECT * FROM orders WITH (INDEX(idx));
当我触发上述查询时出现错误
mysql #1064 - You have an error in your SQL syntax
我创建了如下索引
create index idx on orders(date,status);
谁能告诉我正确的语法?
如果索引合适,将在不明确指定的情况下使用它。
鉴于您正在使用 SELECT *
我不希望使用您的索引(即使 INDEX 提示具有正确的语法)。选择取决于查询优化器的启发式方法。
正确的语法是:
SELECT * FROM orders USE INDEX(idx);
参考:Index Hints
另外,请注意:100 次中有 99 次,不应指定索引提示。让优化器完成它的工作。
SELECT * FROM orders WITH (INDEX(idx));
当我触发上述查询时出现错误
mysql #1064 - You have an error in your SQL syntax
我创建了如下索引
create index idx on orders(date,status);
谁能告诉我正确的语法?
如果索引合适,将在不明确指定的情况下使用它。
鉴于您正在使用 SELECT *
我不希望使用您的索引(即使 INDEX 提示具有正确的语法)。选择取决于查询优化器的启发式方法。
正确的语法是:
SELECT * FROM orders USE INDEX(idx);
参考:Index Hints
另外,请注意:100 次中有 99 次,不应指定索引提示。让优化器完成它的工作。