gpt4 book ai didi

mysql - 在空数据库上解释计划 MySQL

转载 作者:行者123 更新时间:2023-11-29 07:30:19 24 4
gpt4 key购买 nike

我有一份 MySQL 5.6(+ Percona 工具包)中的数据库模式的副本,因为我必须评估应用程序查询的性能(并报告它们以便采取措施优化查询/模式) .此模式(出于安全原因)未填充数据,原始表可能有 100k-10 条记录。

我正在对查询运行 Explain(使用 MySQL Workbench 6.3),但似乎没有用,因为它没有显示所有分析。示例:对连接三个表的(已知有效的)Select 查询的解释显示消息“Impossible where noticeed after reading const tables”。

所以,问题是:

  • 在空数据库上运行 Explain 没用吗?
  • 如何为我必须审查的查询获得可靠的解释?

最佳答案

这取决于查询,但是,是的,我经常建议您需要用一些示例数据填充表以获得准确的 EXPLAIN 报告。

即使您填充 1 行以避免出现“不可能的位置”注释,这也不够好,因为优化器可能会对行数很少的表进行特殊处理。也就是说,优化器知道这么小的表无论如何都适合单页存储,而存储引擎检索的最小单位是一页,因此它可能会进行“表扫描”而不是使用索引,而如果表有几千行,则对同一查询使用索引很重要。

您不一定需要用真实的敏感数据填充表格。编写脚本来生成与您的真实数据相似且足以填充表格以便您进行测试的无意义数据是很常见的。

您不一定需要填充 100,000 行数据才能让 EXPLAIN 向您展示它将用于那么多数据的相同优化器计划。如果您可以用几百或几千行人工数据填充表格就足够了。

关于mysql - 在空数据库上解释计划 MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51600904/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com