42

我有一个 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,我无法更改。)

4

4 回答 4

73

你错过了

FROM table

正确的 SQL 应该是:

SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....
于 2012-07-31T01:15:06.383 回答
5
select * from table use index (idx);

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

于 2012-07-31T01:14:37.663 回答
3

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

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

有关使用 INDEXFORCE INDEX提示的更多详细信息,请查看此链接

于 2019-01-11T06:07:05.500 回答
-1

选择 Coloumn1,Coloumn2,Coloumn.... FROM TABLE_NAME 使用索引( index_name ) WHERE Coloumn="condition";

如果你有正确的索引,那么你不需要使用 index()。您的查询自动选择正确的索引。如果您的查询在使用索引后变慢然后重新检查您的索引,则索引有问题。在此先感谢。在此处输入代码

于 2017-05-29T11:02:02.350 回答