如何提示在 MySQL 选择查询中使用的索引?

问题描述 投票:0回答:4

我有一个 MySQL 查询(运行 MySQL 5.0.88),我正在尝试加快速度。基础表有多个索引,对于相关查询,使用了错误的索引(

i_active
- 16.000 行,与
i_iln
- 7 行)。

我对 MySQL 不太有经验,但读到有一个

use index
提示,它可以强制 mySQL 使用某个索引。我正在尝试这样:

 SELECT art.firma USE INDEX (i_iln)
 ...

但这会产生 MySQL 错误。

问题
谁能告诉我我做错了什么? (除了运行 5.0.88,我无法更改。)

mysql sql indexing hint
4个回答
77
投票

你错过了

FROM table

正确的 SQL 应该是:

SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....

5
投票
select * from table use index (idx);

http://dev.mysql.com/doc/refman/5.0/en/index-hints.html


3
投票

有时,使用使用索引(index_name)优化器可能会进行表扫描,如果使用提示强制索引,优化器将被迫使用索引,只有在没有办法获取行的情况下才会进行表扫描提供索引。

SELECT art.firma FROM art FORCE INDEX (i_iln);

有关提示的更多详细信息USE INDEXFORCE INDEX请检查此链接


-1
投票
SELECT Coloumn1, Coloumn2, Coloumn.... FROM TABLE_NAME USE INDEX (index_name) WHERE Coloumn = "condition";

如果你有正确的索引,则不需要使用index()。您的查询会自动选择正确的索引。如果使用索引后查询速度很慢,请重新检查索引,索引有问题。

© www.soinside.com 2019 - 2024. All rights reserved.