V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  ihuotui  ›  全部回复第 45 页 / 共 47 页
回复总数  929
1 ... 37  38  39  40  41  42  43  44  45  46 ... 47  
2016-06-11 11:01:59 +08:00
回复了 ZenZen 创建的主题 求职 [广州]投了几十次实习简历都直接被刷了,难道我还是太渣了
@ZenZen 我看得出你是一个有追求的程序员。
申请加人啊,直接请假说体力不支,休息。
2016-06-11 10:57:44 +08:00
回复了 herogui 创建的主题 程序员 与野生程序员一起撸代码是一种什么体验?
我要告你种族歧视。
2016-06-10 22:38:16 +08:00
回复了 zhenjiachen 创建的主题 职场话题 吐槽一下 CTO
要不来我公司
2016-06-10 22:36:57 +08:00
回复了 ZenZen 创建的主题 求职 [广州]投了几十次实习简历都直接被刷了,难道我还是太渣了
要来深圳试一试么
2016-06-10 14:00:00 +08:00
回复了 william23 创建的主题 生活 想问下大家平时出去穿休闲鞋还是跑鞋?
回力运动鞋,走着走着, return power 。
2016-06-09 22:33:57 +08:00
回复了 honmaple 创建的主题 Python 怎样选择 uid 生成策略?
参考淘宝订单 id 规则。哈哈。
2016-06-09 22:28:58 +08:00
回复了 depress 创建的主题 职场话题 关于拿多少钱干多少事
看你的追求,你的追求决定你做什么。
2016-06-09 10:52:39 +08:00
回复了 SaintSeiya 创建的主题 程序员 科班出身的程序员,水平到底如何?
@colin4124 赞,不是所有大学计算机毕业就是科班出身,科班是指通过学习一定基础的人,而且学习扎实,有追求,不过那些人已经去大公司了,在小公司一般看不到科班程序员。
2016-06-09 01:01:30 +08:00
回复了 zhenjiachen 创建的主题 职场话题 吐槽一下 CTO
团队不满意换,工资不满意换,团队工资都不满意换,方向不对换,技术不对换,程序员换工作理由。
2016-06-04 14:58:41 +08:00
回复了 lansexinyu 创建的主题 问与答 硬盘被全盘格式化了可以恢复吗?
直接恢复分区表,千万不要写数据了,买一个新硬盘来全盘复制后操作。
linux 啊
2016-05-21 12:28:45 +08:00
回复了 Wangxf 创建的主题 职场话题 到了大公司好像突然有点不适应了
体验生活嘛,怕啥,又不是不能换。
2016-05-14 01:42:12 +08:00
回复了 SlipStupig 创建的主题 职场话题 一次莫名其妙的面试
验证码识别技术很多,而且开始流行不是验证码了,换拖动滑块。。
2016-05-05 13:34:18 +08:00
回复了 sivacohan 创建的主题 问与答 求解惑,如何吸引到高级前端工程师加入?
我同事满足要求,在深圳都不止 25k 税前了,为什么去北京?人家追求更加高级环境。
看你数据量吧,建议看看我提供的资料
Mysql 的分页查询语句的性能分析


  MySql 分页 sql 语句,如果和 MSSQL 的 TOP 语法相比,那么 MySQL 的 LIMIT 语法要显得优雅了许多。使用它来分页是再自然不过的事情了。

2.1 最基本的分页方式:

Sql 代码 收藏代码

SELECT ... FROM ... WHERE ... ORDER BY ... LIMIT ...

在中小数据量的情况下,这样的 SQL 足够用了,唯一需要注意的问题就是确保使用了索引:
举例来说,如果实际 SQL 类似下面语句,那么在 category_id, id 两列上建立复合索引比较好:

Sql 代码 收藏代码
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 50, 10


2.2 子查询的分页方式:

随着数据量的增加,页数会越来越多,查看后几页的 SQL 就可能类似:
Sql 代码 收藏代码
SELECT * FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 10

一言以蔽之,就是越往后分页, LIMIT 语句的偏移量就会越大,速度也会明显变慢。
此时,我们可以通过子查询的方式来提高分页效率,大致如下:
Sql 代码 收藏代码
SELECT * FROM articles WHERE id >=
(SELECT id FROM articles WHERE category_id = 123 ORDER BY id LIMIT 10000, 1) LIMIT 10


2.3JOIN 分页方式

Sql 代码 收藏代码
SELECT * FROM `content` AS t1
JOIN (SELECT id FROM `content` ORDER BY id desc LIMIT ".($page-1)*$pagesize.", 1) AS t2
WHERE t1.id <= t2.id ORDER BY t1.id desc LIMIT $pagesize;

经过我的测试, join 分页和子查询分页的效率基本在一个等级上,消耗的时间也基本一致。
explain SQL 语句:
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> system NULL NULL NULL NULL 1
1 PRIMARY t1 range PRIMARY PRIMARY 4 NULL 6264 Using where
2 DERIVED content index NULL PRIMARY 4 NULL 27085 Using index

----------------------------------------

为什么会这样呢?因为子查询是在索引上完成的,而普通的查询时在数据文件上完成的,通常来说,索引文件要比数据文件小得多,所以操作起来也会更有效率。

实际可以利用类似策略模式的方式去处理分页,比如判断如果是一百页以内,就使用最基本的分页方式,大于一百页,则使用子查询的分页方式。
1 ... 37  38  39  40  41  42  43  44  45  46 ... 47  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5922 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 53ms · UTC 02:31 · PVG 10:31 · LAX 18:31 · JFK 21:31
Developed with CodeLauncher
♥ Do have faith in what you're doing.