我有一个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,我无法改变。)
答案 0 :(得分:51)
您错过了FROM table
正确的SQL应该是:
SELECT art.firma FROM your_table USE INDEX (i_iln) WHERE ....
答案 1 :(得分:5)
select * from table use index (idx);
答案 2 :(得分:0)
有时,使用使用索引(index_name)的优化器可能会进行表扫描,如果您使用提示 force index ,则优化器将被强制使用索引,仅在没有其他方法获取具有提供的索引的行的情况下才进行表扫描。
LoginConroller
有关提示的更多详细信息,使用索引和强制索引,请选中此link
答案 3 :(得分:-1)
选择Coloumn1,Coloumn2,Coloumn .... FROM TABLE_NAME USE INDEX ( index_name ) WHERE Coloumn =" condition&#34 ;;
如果你有正确的索引,你就不需要使用index()。你的查询自动选择正确的索引。如果你的查询在使用索引后重新检查你的索引,那么索引就出错了。 在此先感谢。输入代码