我在MySQL 5.6 (+ Percona工具包)中有一个数据库模式的副本,因为我必须评估应用程序上的查询的性能(并报告它们,以便采取优化查询/模式的措施)。此架构(出于安全原因)没有填充数据,原始表可能有100k-10条记录。
我正在对查询运行“解释”(使用MySQL Workbench 6.3),但似乎没有用,因为它没有显示所有的分析。示例:对连接三个表的(已知正在工作的) Select的解释显示了“在读取const表后不可能注意到的”消息。
因此,问题是:
发布于 2018-07-31 01:22:41
这取决于查询,但是的,我经常建议您需要用一些示例数据填充表,以获得准确的解释报告。
即使您填充了1行,从而避免了“不可能的地方”注意事项,这还不够好,因为只有很少行的表可能会被优化器专门处理。也就是说,优化器知道这样一个小表无论如何都适合于单个存储页,而且存储引擎将检索的最小单元是一个页面,因此它可以执行“表扫描”而不是使用索引,而如果表有几千行,则为同一查询使用索引很重要。
您不一定需要用真实、敏感的数据填充表。通常编写一个脚本来生成与实际数据相似的无意义数据,足以填充表以便进行测试。
您不一定需要填充100 k行的数据才能得到解释,以便向您显示与用于该多个数据的优化器计划相同的内容。如果你能用几百行或几千行的人工数据填充这些表,那就足够了。
https://stackoverflow.com/questions/51600904
复制相似问题