数据查询时,查询速度和查询次数的比较

asdf535521 2012-10-01 09:46:36
其实我也不知道标题是不是应该这样写,因为想不到更好的标题了。

问题的来源是:
比如页面上有一个列表项是来自数据库。列表页上每页列出十项数据,有分页,还有“总共xx条”的显示项。

现在有两种数据查询方式:

一种是,select * from table;将所有的数据都查询出来,统计返回多少行的数据,将这个数据显示在“总共xx条”这里,然后再从得到的数据里面截取用户要求的第n页数据。

我看到有几个软件是这么写的。(php的),我觉得这样是少了查询次数,但是查询速度会不好吧,犹其是数据量很大的时候,要是数据库在远程就更死翘翘了。

另一种是用两个语句,先用select count('id') from table 得到总共的数据条数,显示在“总共xx条”,然后用select * from table where page = n;查询出用户要求显示的第n页数据。
我觉得这个方法会好点,查询会快点。但是问题是,如果页面上有很多查询项,比如dz的帖子列表项,有那么多用户,每个用户的用户信息,每个用户的权限,每个用户发的帖子,等等,这些都不在同一个表里,难道都是分多次分别查询的吗?

求解答,平时要不要尽量查询少点信息,但是可以多查几次,这样好不好。

...全文
191 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
heavstar 2012-10-10
  • 打赏
  • 举报
回复
用count(*) 汇总, limit 分页
查出所有数据来数总条数是相当耗资源的。
不能为了显示一页的数据把所有明细都查出来。
兼哲 2012-10-06
  • 打赏
  • 举报
回复
你的写法有太多的问题:
1. 别用 select * ,换成你需要的字段
2. count(*),或者 count(1) ,别用具体的字段。
3. 你不就是一个分页嘛。。。纠结那么多干嘛。

[Quote=引用楼主 的回复:]
其实我也不知道标题是不是应该这样写,因为想不到更好的标题了。

问题的来源是:
比如页面上有一个列表项是来自数据库。列表页上每页列出十项数据,有分页,还有“总共xx条”的显示项。

现在有两种数据查询方式:

一种是,select * from table;将所有的数据都查询出来,统计返回多少行的数据,将这个数据显示在“总共xx条”这里,然后再从得到的数据……
[/Quote]
rucypli 2012-10-06
  • 打赏
  • 举报
回复
这个功能一般用两个sql完成

第一个sql显示那一页的内容 比如第十页 select * from tb limit 100,10;
第二个显示总共多少条记录 select count(*) from tb;
ACMAIN_CHM 2012-10-03
  • 打赏
  • 举报
回复
[Quote]这么说,总数还是要单独用count单独查下喽。[/Quote]是的。
asdf535521 2012-10-02
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
一般是直接使用 limit 100,20; 这样来取第6页。
[/Quote]

这么说,总数还是要单独用count单独查下喽。
ACMAIN_CHM 2012-10-02
  • 打赏
  • 举报
回复
一般是直接使用 limit 100,20; 这样来取第6页。
-逗你玩儿- 2012-10-01
  • 打赏
  • 举报
回复
不是经常查的东西可以单独索引么?额。
难道我想的不对?
asdf535521 2012-10-01
  • 打赏
  • 举报
回复
上面
select * from table where page = n;
更正为
select * from table limit n,10;
写成页面url了。不好意思。

56,679

社区成员

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

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