大数据下解决join的查询速度问题

左表20W条数据,因为受mysql的limit扫描影响,传统的分页查询越到后面越慢,所以优化就得直接取得条数范围,让mysql直接跳过扫描前面的数据即可,下面为实现代码,和截图。。。

当然,不是说只适合join,任何走limit的查询语句都可以哈!送给纯洁的小白朋友。如果大神们有更好的,欢迎分享!感谢大神们。

$dircontent = M('Dir_content');
$count = $dircontent->count();
$page = new \Think\Page($count,15);
$id = $dircontent->limit(($count-1-$page->firstRow).',1')->field('id')->select();
$where['id'] = array('ELT',$id[0]['id']);
$list = $dircontent->field('a.id,a.name,a.domain,a.uid,a.is_auth,a.time,a.is_difang,a.difang_class,b.member_name')
->alias('a')
->join('left join __MEMBER__ b ON a.userid = b.member_id')
->Force('pri')
->where($where)
->limit($page->listRows)
->order('id DESC')
->select();


这个是第一页


这个是最后一页

转载自:http://www.thinkphp.cn/topic/28099.html

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇