免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2651 | 回复: 2
打印 上一主题 下一主题

【已解决】MySQL表InnoDB主键,Limit分页 ORDER BY测试! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 16:12 |只看该作者 |倒序浏览
本帖最后由 LMUser 于 2011-12-29 17:32 编辑

MySQL表 InnoDB自增主键,使用 Limit 语句分页的时候,还需要明确用 ORDER BY 排序吗?
SELECT id, first_name FROM tb_user LIMIT 1000, 10;
SELECT id, first_name FROM tb_user ORDER BY id LIMIT 1000, 10;

其中 id 是自增主键,这两条 SQL语句中 LIMIT 返回的结果永远一样吗?
性能呢?

论坛徽章:
0
2 [报告]
发表于 2011-12-21 16:50 |只看该作者
id是独立的主键的话,第一个语句和第二个语句返回的东西是一样的,主键本来是排好序的,两个语句的性能差别我任务不会差别多少的。待高手看看是否有不同的看法。

论坛徽章:
0
3 [报告]
发表于 2011-12-29 17:26 |只看该作者
本帖最后由 LMUser 于 2011-12-29 17:27 编辑

CREATE TABLE `tb_user` (
  `user_id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
  `first_name` VARCHAR(50) NOT NULL,
  `second_name` VARCHAR(50) NOT NULL,
  `birthday` DATE NOT NULL,
  `gender` ENUM('m','f') NOT NULL,
  PRIMARY KEY (`user_id`),
  KEY `idx_last_second_birthday` (`first_name`,`second_name`,`birthday`),
  KEY `idx_second_birthday` (`second_name`,`birthday`),
  KEY `idx_second_name` (`second_name`),
  KEY `idx_user_id_second_name` (`user_id`,`second_name`),
  KEY `idx_second_name_user_id` (`second_name`,`user_id`)
) ENGINE=INNODB AUTO_INCREMENT=802 DEFAULT CHARSET=utf8;

1> 返回所有字段,永远按顺序返回;
删除,更新;
删除在插入原ID,更新在插入原ID;
乱序插入数据;
SELECT * FROM test.tb_user LIMIT 0, 10

2> 返回主键 ID 字段,会出现乱序返回;
SELECT user_id FROM test.tb_user LIMIT 0, 10

3> 返回主键 ID 和 二级索引字段,会出现乱序返回;
SELECT user_id, second_name FROM test.tb_user LIMIT 0, 10

4> 返回二级索引字段,按顺序返回(不能确定是不是永远按顺序返回);
SELECT second_name FROM test.tb_user LIMIT 0, 10

5> 返回覆盖索引字段,按顺序返回(不能确定是不是永远按顺序返回);
SELECT first_name, second_name, birthday FROM test.tb_user LIMIT 10, 10
SELECT first_name, second_name, birthday FROM test.tb_user ORDER BY first_name LIMIT 10, 10

6> 返回 主键ID 和 包含 主键ID 的覆盖索引字段,不按顺序返回;
ALTER TABLE tb_user ADD INDEX idx_user_id_second_name(user_id,second_name)
ALTER TABLE tb_user ADD INDEX idx_second_name_user_id(second_name,user_id)


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP