我有一个 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,我无法更改。)
你错过了
FROM table
正确的 SQL 应该是:
SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....
select * from table use index (idx);
有时,使用使用索引(index_name)优化器可能会进行表扫描,如果使用提示强制索引,优化器将被迫使用索引,只有在没有办法获取行的情况下才会进行表扫描提供索引。
SELECT art.firma FROM art FORCE INDEX (i_iln);
有关提示的更多详细信息USE INDEX和FORCE INDEX请检查此链接
SELECT Coloumn1, Coloumn2, Coloumn.... FROM TABLE_NAME USE INDEX (index_name) WHERE Coloumn = "condition";
如果你有正确的索引,则不需要使用index()。您的查询会自动选择正确的索引。如果使用索引后查询速度很慢,请重新检查索引,索引有问题。