我想要把题库设计一下翻页功能,Mysql语句也很简单,在本地测试一点问题都没有,但是一放到服务器上便提示内存资源耗竭,最后在查看了一些资料后,在后面加了一个limit 1,如此便跑得飞快:
实现代码:
public static function PrevQuestion($id,$uid=null,$testpaper=null)
{
$query = Question::find()->where(['<','id',$id]);
if($uid)
{
$query->andWhere(['author'=>$uid]);
}
if($paper)
{
$query->LeftJoin('sq_testpaperinfo t','t.paper_id='.$paper_id);
}
$query->orderBy('id DESC');
$query->limit(1);
return $query->one();
}
public static function NextQuestion($id,$uid=null,$testpaper=null)
{
$query = Question::find()->where(['>','id',$id]);
if($uid)
{
$query->andWhere(['author'=>$uid]);
}
if($paper)
{
$query->LeftJoin('sq_testpaperinfo t','t.paper_id='.$paper_id);
}
$query->orderBy('id DESC');
$query->limit(1);
return $query->one();
}
下面是参考内容:
/**
* 获取当前记录的上一条记录
* @param seq
* @return
*/
@Select("select title, random_code from tb_blog where seq < ${seq} order by seq desc limit 1 ")
public Map<String,Object> getPreviousBlog(@Param("seq") long seq);
/**
* 获取当前记录的下一条记录
* @param seq
* @return
*/
@Select("select title, random_code from tb_blog where seq > ${seq} order by seq asc limit 1 ")
public Map<String,Object> getPostBlog(@Param("seq") long seq);
seq 是自增序列,random_code是id,title是博客标题。
seq不是主键,要使seq自增,先添加seq字段或建表时创建,再将seq添加unique索引,再使seq auto_increment,因为自增长列必须先是unique key或primary key。