Mysql 将查询限制为18000行。但每次运行时都要跟踪执行时间,并保持最近50次执行的移动平均值。如果该平均值小于4.5s,则向查询大小添加1%并重置移动平均值。所以现在你的应用程序每次请求18180行。50次迭代后,如果移动平均值低于4.5s,则再次添加1%

Mysql 将查询限制为18000行。但每次运行时都要跟踪执行时间,并保持最近50次执行的移动平均值。如果该平均值小于4.5s,则向查询大小添加1%并重置移动平均值。所以现在你的应用程序每次请求18180行。50次迭代后,如果移动平均值低于4.5s,则再次添加1%,mysql,sql,database,Mysql,Sql,Database,如果你的移动平均线超过4.75秒,减去1% 随着时间的推移,此方法应收敛到针对特定查询/环境等的优化N行解决方案,并应在条件发生变化时(例如,高并发与低并发)进行调整(缓慢但稳定) 只要一个--擦掉它,两个--更多的东西… 作为一名DBA,我必须说……任何查询花费超过5秒的时间应该是非常罕见的。特别是,如果它是一个经常运行且被前端应用程序使用的查询,那么它绝对不应该运行5秒钟。如果确实有一个面向用户的查询无法在5秒钟内完成,这表明数据库设计需要改进 Jonathan VM的绿条定律报告我曾在一家

如果你的移动平均线超过4.75秒,减去1%

随着时间的推移,此方法应收敛到针对特定查询/环境等的优化N行解决方案,并应在条件发生变化时(例如,高并发与低并发)进行调整(缓慢但稳定)

只要一个--擦掉它,两个--更多的东西…

  • 作为一名DBA,我必须说……任何查询花费超过5秒的时间应该是非常罕见的。特别是,如果它是一个经常运行且被前端应用程序使用的查询,那么它绝对不应该运行5秒钟。如果确实有一个面向用户的查询无法在5秒钟内完成,这表明数据库设计需要改进

  • Jonathan VM的绿条定律报告我曾在一家公司工作,该公司仍然使用一个大型机应用程序,每天都能打印出大量绿条点阵打印报告。其中大部分被忽略了,而在使用的少数几个页面中,大多数都没有读到第一页以外的内容。一个报表可能有数千行按帐户年龄递减排序…用户所需要的只是查看最老的10行。我的法则是:实际需要查看大量行的用例数量非常少。思考——真的思考——你的查询的用例,以及拥有大量记录是否真的是用户所需要的


  • eeee。。。仍然很模糊,你能放一些示例数据/输出吗?你会用什么主机编程语言来查询mysql?这是重复的吗?要“获得尽可能多的行”,您必须分析实际查询。在你发布你正在使用的实际查询之前,我们只能猜测皇帝鼻子的长度。这个问题似乎很清楚,但不清楚的是你为什么要检索这些信息?您是否试图突出显示一天中数据库运行速度比其他数据库慢的时段?
    declare @d1 datetime2(7); set @d1=getdate();
    select c1,c2 from t1 where (datediff(ss,@d1,getdate())<5)