mysql数据查询,共有5000条数据,要有三种返回结果。

查询条件为:a=1,a=2,a=3,a=1的查出最新的5条,a=2的查出最新10条,a=3的查出最新6条。有两种查询方式:第一种是查询三次,得到三个数组。第二种是把所有的... 查询条件为: a=1,a=2,a=3,a=1的查出最新的5条,a=2的查出最新10条,a=3的查出最新6条。 有两种查询方式:第一种是查询三次,得到三个数组。第二种是把所有的5000条数据都查询出来,再用PHP循环区分分别赋予三个数组。请问那种方法对mysql的资源占用最少,更为效率,或者有没有其它更好的解决方案。求指教! 展开
 我来答
匿名用户
2013-03-20
展开全部
通过mysql三次查询,出三个数组。。如果访问量大的话数据三个数据缓下来,简单的可以把数组写入文件,当文件不超时时间调用文件,不再查询。。当文件超时重新查询数据库并更新文件。
百度网友0f37e23c0
2013-03-20 · TA获得超过1543个赞
知道大有可为答主
回答量:1070
采纳率:50%
帮助的人:1300万
展开全部
给你介绍一种 效率更高的查询吧,使用存储过程。
把 a 作为参数,a=1,a=2,a=3,分别 order by id desc limit 5 或者 10 或者 6。
sql:

CREATE PROCEDURE `GetInfo`(in a_type int)

BEGIN

declare stmt varchar(8000);

declare limitV varchar(10);
set limitV = '5' ;
if a_type = 1 then
set limitV = '5' ;

else if a_type = 2 then
set limitV = '10' ;

else if a_type =3 then
set limitV = '6' ;
end if;

SET @SQL = Concat(" select * from 你的表 order by id desc limit ", limitV );

prepare stmt from @SQL;
execute stmt;
deallocate prepare stmt;

END

// 调用

call GetInfo (1);

call GetInfo (2);

call GetInfo (3);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
10...1@qq.com
2013-03-20
知道答主
回答量:1
采纳率:0%
帮助的人:1524
展开全部
第一种你要遍历数据3次吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式