我最近在一个功能更强大的服务器上整合了几个数据库。他们有几十个表,每个表有较大的表,每个表有2-6百万行。我注意到一些在大约15ms内运行的查询现在需要10秒才能完成。
我在数据库上运行mysqlcheck -c,报告每个表都可以。然后,我试图优化表格。那没用。工作是手动删除每个索引并重新创建它。
对于DBA,我是新手。为什么不优化修复任何破碎的索引?是否有希望有一个更好的方法来做到这一点,而不是手动删除1000多个索引并重新创建它们?
感谢您的帮助和回复。
答案 0 :(得分:0)
在mysql中,索引始终是平衡树。引擎正在更新它们并保持优化。您不应该删除并重新创建它们。如果重新创建它们,性能可能不会改变。
您是否分析了现在较慢的查询?尝试优化它们以及与它们相关的索引。使用explain
显示查询执行计划。