laravel分页的查询优化

时间:2016-11-11 10:02:38

标签: php mysql laravel

我正在使用laravel分页。我是laravel的新手,我有以下查询从作业表中获取记录,该记录绑定到站点表,作业表中有300k记录,站点中有10k记录。我还设置了索引为了获得更快的结果。当使用LIMIT 0,10获取数据时,它需要0.000秒但是使用LIMIT 299990,0需要花费太多时间。为了解决这个问题,我将查询从Query1更改为Query2。

查询1:

SELECT 
    s.site_name, s.postcode, j.contarct_code, j.job_num, s.site_id 
FROM 
    to_jobs as j 
LEFT JOIN  
    to_sites as s ON j.fk_site_id = s.site_id  
LIMIT  
    299970, 10

QUERY2:

SELECT 
    s.site_name, s.postcode, j.contarct_code, j.job_num, s.site_id 
FROM 
    to_jobs as j 
LEFT JOIN  
    to_sites as s  ON j.fk_site_id = s.site_id  
WHERE
    j.rec_id > 299970  
LIMIT  
    10

我得到了预期的结果,但是当我将查询放到laravel分页时,它会给出错误的记录总数。

使用laravel代码查询1:

->select('s.site_name','s.postcode','j.contarct_code','j.job_num','j.rec_id','s.site_id')
->leftJoin('to_sites as s', 'j.fk_site_id', '=', 's.site_id')
->paginate(10);

总= 299 997

使用laravel代码查询2:

->select('s.site_name','s.postcode','j.contarct_code','j.job_num','j.rec_id','s.site_id')
->leftJoin('to_sites as s', 'j.fk_site_id', '=', 's.site_id')
->where('j.rec_id', '>', '1067512')
->paginate(10);

总计= 49

数据提取时间问题已解决,但分页记录已更改。还有其他解决办法吗?

0 个答案:

没有答案