在MySQL中编写SQL语句之后,如何衡量它们的速度/性能?

在MySQL中编写SQL语句之后,如何衡量它们的速度/性能?,sql,mysql,performance,sql-execution-plan,Sql,Mysql,Performance,Sql Execution Plan,我从一篇执行计划的文章中看到: 10 rows fetched in 0.0003s (0.7344s) 链接: 为什么会显示2个持续时间?如果我还没有大数据集呢。例如,如果我只有20条、50条,甚至只有100条记录,我真的无法衡量现实生活中两条不同的SQL语句在速度方面相比有多快?换句话说,至少需要几十万条记录,甚至一百万条记录才能准确地比较这两条不同SQL语句的性能?通常显示两次,一次是CPU时间,一次是挂钟时间。我记不起哪个是哪个,但似乎第一个是CPU时间,第二个是经过的时间。测试和比较

我从一篇执行计划的文章中看到:

10 rows fetched in 0.0003s (0.7344s)
链接:


为什么会显示2个持续时间?如果我还没有大数据集呢。例如,如果我只有20条、50条,甚至只有100条记录,我真的无法衡量现实生活中两条不同的SQL语句在速度方面相比有多快?换句话说,至少需要几十万条记录,甚至一百万条记录才能准确地比较这两条不同SQL语句的性能?

通常显示两次,一次是CPU时间,一次是挂钟时间。我记不起哪个是哪个,但似乎第一个是CPU时间,第二个是经过的时间。

测试和比较操作性能的最佳方法是经常(如果不是总是的话)!使用一组真实的数据

如果您计划在应用程序投入生产时拥有数百万行,那么现在就应该测试数百万行,而不仅仅是十几行

以下几点提示:

在进行基准测试时,请使用select SQL\u NO\u CACHE…,而不是select。。。 这将阻止MySQL使用其查询缓存,这将使第一个查询花费正常的时间,并且重新执行它的速度要快很多倍 学习如何使用EXPLAIN,并理解其输出 阅读本手册的章节-
关于你的第一个问题:

在Y s Z s中获取的X行

X=当然的行数; Y=MySQL服务器执行查询解析、检索、发送所用的时间; Z=结果集从服务器传输到客户端所用的时间

资料来源:

对于第二个问题,除非使用实际数量的记录进行测试,否则您永远不会知道查询的执行情况。下面是一个关于如何正确进行基准测试的好例子:


那篇博客和这本书都是一座金矿。

我同意。我没有回答问题的这一部分,只是回答了《什么是时代》的问题