我有一个与其他人描述的类似的问题。
IN使用索引,需要10分钟才能运行;我试过了
set session eq_range_index_dive_limit=4294967295; 没有运气。set @@global.max_seeks_for_key=100; 还是没有运气。这是在我升级了一些服务器之后发生的。
mysql_upgrade 没有报告任何问题。
正如我所指出的,我看到了其他问题,但其中提出的答案都没有解决我的问题。
非常感谢罗兰多到目前为止的回答。我继续在 my.cnf 的 [mysqld] 部分对此进行了测试
optimizer_switch = index_merge=on,index_merge_union=on,index_merge_sort_union=on,index_merge_intersection=on,engine_condition_pushdown=on,index_condition_pushdown=on,mrr=on,mrr_cost_based=on,block_nested_loop=on,batched_key_access=off,materialization=on,semijoin=on,loosescan=on,firstmatch=on,duplicateweedout=off,subquery_materialization_cost_based=on,use_index_extensions=on,condition_fanout_filter=off,derived_merge=off
Run Code Online (Sandbox Code Playgroud)
遗憾的是,索引仍然没有被拾取。我尝试关闭所有新添加的选项:
duplicateweedout=off
condition_fanout_filter=off
derived_merge=off
Run Code Online (Sandbox Code Playgroud)
我什至尝试过,因为我在我的解释计划中SET optimizer_switch='block_nested_loop=off'
得到了'Using where; Using join buffer (Block Nested Loop)'和。'Using temporary; Using filesort'
还在挠头。谢谢,最重要的是升级导致很多查询不使用索引,这仍然是一个痛苦。数据库接近 2TB,但查询在 5.6 上的最后几个 master 中运行良好