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的资源占用最少,更为效率,或者有没有其它更好的解决方案。求指教!
展开
3个回答
2013-03-20
展开全部
通过mysql三次查询,出三个数组。。如果访问量大的话数据三个数据缓下来,简单的可以把数组写入文件,当文件不超时时间调用文件,不再查询。。当文件超时重新查询数据库并更新文件。
展开全部
给你介绍一种 效率更高的查询吧,使用存储过程。
把 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);
把 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);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询