查询大数据量时该如何优化?

yangyunzhao 2011-11-02 03:02:05
假设这么一个场景,mysql服务器同时有60个左右客户端在访问。

其中既有读也有写还有更新。假设10个左右客户端是在查询数据,在同一张表中查询,该表有300万行数据,每行数据大概15个数据项。

假设每次查询的结果大概5千到10万不等。

此时,我该如何优化查询?

1、是用limit语句,每次查100条数据?

2、还是一次性取可能10万数据到客户端?

3、或者别的什么好办法?谢谢!!
...全文
230 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
yangyunzhao 2011-11-04
  • 打赏
  • 举报
回复
拿到这点数据不干嘛,就是解析后发给别的应用。
聪明的一休 2011-11-03
  • 打赏
  • 举报
回复
不知道是不是需求分析上存在问题。
每次查询的结果大概5千到10万不等,不知道是什么业务逻辑需要这样的需求。
ACMAIN_CHM 2011-11-03
  • 打赏
  • 举报
回复
[Quote]是在局域网环境下使用的。应该是100M网络,甚至1000M网络。[/Quote]如果是100M网,则10万记录的传输也不是什么大的问题啊。楼主的担心主要是什么?或者碰到什么样的情况需要优化?
ACMAIN_CHM 2011-11-03
  • 打赏
  • 举报
回复
你的客户端拿到这10万条记录,准备用于什么? 如果是全部显示,则没什么可优化的了。 但极少情况下会出现需要同时显示10万条记录在客户端的情况。
yangyunzhao 2011-11-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 acmain_chm 的回复:]
既然所有的记录都必须传送到客户端去分析,则应该直接使用 "2、还是一次性取可能10万数据到客户端" 否则查100次产生的负载会更多。
需要考虑的是这个查询语句本身是否可以优化。 或者可否将这 5千到10万不等不等的记录在数据库端进行直接处理,然后仅将需要的结果返回到客户端。
[/Quote]

忘了说,是在局域网环境下使用的。应该是100M网络,甚至1000M网络。

“或者可否将这 5千到10万不等不等的记录在数据库端进行直接处理,然后仅将需要的结果返回到客户端”,能不能给点提示,该如何处理??
ACMAIN_CHM 2011-11-02
  • 打赏
  • 举报
回复
既然所有的记录都必须传送到客户端去分析,则应该直接使用 "2、还是一次性取可能10万数据到客户端" 否则查100次产生的负载会更多。
需要考虑的是这个查询语句本身是否可以优化。 或者可否将这 5千到10万不等不等的记录在数据库端进行直接处理,然后仅将需要的结果返回到客户端。
rucypli 2011-11-02
  • 打赏
  • 举报
回复
2对数据库是减压
kyzy_yy_pm 2011-11-02
  • 打赏
  • 举报
回复
肯定是第一个了,第二个的话一次性读取再加上带宽的话,估计很多用户都不耐烦的跑了,第二种从web理论上就有问题,不过limit要做好优化,如索引还有语句等等
yangyunzhao 2011-11-02
  • 打赏
  • 举报
回复
恩,有个顾虑啊,这样假设查询1万数据,就得和服务器交互100次哦。会不会比较慢?
wwwwb 2011-11-02
  • 打赏
  • 举报
回复
方法1 即可

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧