2016 - 2024

感恩一路有你

sql数据库怎么用 为什么MySQL在数据库较大的时候分页查询很慢,如何优化?

浏览量:2104 时间:2021-03-10 18:10:55 作者:admin

为什么MySQL在数据库较大的时候分页查询很慢,如何优化?

使用合理的分页方式以提高分页的效率


正如楼主所说,分页查询在我们的实际应用中非常普遍,也是最容易出问题的查询场景。比如对于下面简单的语句,一般想到的办法是在name,age,register_time字段上创建复合索引。这样条件排序都能有效的利用到索引,性能迅速提升。

如上例子,当 LIMIT 子句变成 “LIMIT 100000, 50” 时,此时我们会发现,只取50条语句为何会变慢?


原因很简单,MySQL并不知道第 100000条记录从什么地方开始,即使有索引也需要从头计算一次,因此会感觉非常的慢。

通常,我们在做分页查询时,是可以获取上一页中的某个数据标志来缩小查询范围的,比如时间,可以将上一页的最大值时间作为查询条件的一部分,SQL可以优化为这样:


若对你有所帮助,欢迎点赞、关注支持哦。

mysql大量数据查询速度慢,sql语句求解?

这个问题和设计有关系, 简单的sql优化提升不了多少, 但是这个sql还是可以进一步优化的利用索引, 用union all代替in, 如 select * from tab where id in (1,2), 可写成select * from tab where id = 1 union all select * from tab where id = 2但是上面的优化起不到根本效果, 如果100万 1000万数据怎么办, 难道每次都要全部查出来嘛, 那是不可能的, 而且你的页面也不能全部都展示出来! 所有需要换个思路, 如, 将一个会员的订单记录查询出来, 然后通过程序(java或者存储过程)算出时间差, 按照上面再计算下一个会员

如何在mysql查找效率慢的SQL语句?

  • 查看慢SQL是否启用,查看命令:show variables like "log_slow_queries" 如果结果为ON则是开启了,如果为OFF则表示禁用了。
  • 开启慢查询命令:set global log_slow_queries = on
  • 查看是否开启:show variables like "log_slow_queries"
  • 查看慢查询参数,即设置超过多少秒的查询归为了慢查询。参数为:long_query_time,查询命令: show global variables like "long_query_time"mysql默认时间为10秒,即10秒及以上的查询被归为了慢查询。我们的实际项目中根本就不可能这么包容你,所以得提供查询效率优化sql,让程序更快的执行。
  • 这里设置时间为1秒,即超过1秒就会被认为慢查询。设置命令:set global long_query_time =1用命令设置的,会立即生效,不用重启mysql服务。但重启mysql服务后就会失效。
  • 查看设置的时间, show global variables like "long_query_time"即可看到现在已经变为1秒了
  • 查看慢查询存放日志,命令: show variables like "slow_query_log_file"去相应目录下查看即可。

sql数据库怎么用 sql数据库 sql有什么用

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。