mysql的id乱序要重排_基于MySQL自增ID字段增量扫描研究

这篇博客展示了关于MySQL数据库的一系列操作,包括查询表中记录的数量,使用LIMIT进行分页,按自增ID和唯一索引进行排序,以及更新表中记录的例子。在不同场景下,查询结果的顺序和限制数量对结果集的影响被详细探讨。

// 总共8条记录

MySQL [test]> SELECT COUNT(1) FROM tableA2;

+----------+

| COUNT(1) |

+----------+

|        8 |

+----------+

1 row in set (0.00 sec)

// 按自增ID无序,但按唯一索引有序

MySQL [test]>SELECT * FROM tableA2;

+----+----+----+----+

| id | af | bf | cf |

+----+----+----+----+

|  1 |1|  2 |  1 |

|  2 |  2 |  1 |  2 |

|  3 |3|  3 |  3 |

| 12 | 11 | 12 | 12 |

| 11 |12| 11 | 11 |

| 13 | 13 | 16 | 13 |

| 14 |14| 17 | 14 |

|  5 | 15 |  5 |  5 |

+----+----+----+----+

8 rows in set (0.00 sec)

// 按自增ID无序,但按唯一索引有序

MySQL [test]>SELECT * FROM tableA2 WHERE id>=1 LIMIT 10;

+----+----+----+----+

| id | af | bf | cf |

+----+----+----+----+

|  1 |1|  2 |  1 |

|  2 |  2 |  1 |  2 |

|  3 |3|  3 |  3 |

| 12 | 11 | 12 | 12 |

| 11 |12| 11 | 11 |

| 13 | 13 | 16 | 13 |

| 14 |14| 17 | 14 |

|  5 | 15 |  5 |  5 |

+----+----+----+----+

8 rows in set (0.00 sec)

// 按自增ID无序,但按唯一索引有序

MySQL [test]>SELECT * FROM tableA2 WHERE id>=2 LIMIT 10;

+----+----+----+----+

| id | af | bf | cf |

+----+----+----+----+

|  2 |2|  1 |  2 |

|  3 |  3 |  3 |  3 |

| 12 |11| 12 | 12 |

| 11 | 12 | 11 | 11 |

| 13 |13| 16 | 13 |

| 14 | 14 | 17 | 14 |

|  5 |15|  5 |  5 |

+----+----+----+----+

7 rows in set (0.00 sec)

// 按自增ID有序,但按唯一索引无序(LIMIT数小于表总记录数)

MySQL [test]>SELECT * FROM tableA2 WHERE id>=2 LIMIT 5;

+----+----+----+----+

| id | af | bf | cf |

+----+----+----+----+

|2|  2 |  1 |  2 |

|  3 |  3 |  3 |  3 |

|5| 15 |  5 |  5 |

| 11 | 12 | 11 | 11 |

|12| 11 | 12 | 12 |

+----+----+----+----+

5 rows in set (0.00 sec)

// 按自增ID有序,但按唯一索引无序(LIMIT数小于表总记录数)

MySQL [test]>SELECT * FROM tableA2 WHERE id>=1 LIMIT 7;

+----+----+----+----+

| id | af | bf | cf |

+----+----+----+----+

|1|  1 |  2 |  1 |

|  2 |  2 |  1 |  2 |

|3|  3 |  3 |  3 |

|  5 | 15 |  5 |  5 |

|11| 12 | 11 | 11 |

| 12 | 11 | 12 | 12 |

|13| 13 | 16 | 13 |

+----+----+----+----+

7 rows in set (0.00 sec)

// 更新一条记录

MySQL [test]>UPDATE tableA2 SET id=15 WHERE id=12;

Query OK, 1 row affected (0.00 sec)

Rows matched: 1  Changed: 1  Warnings: 0

// 按自增ID是无序的

MySQL [test]>SELECT * FROM tableA2  LIMIT 7;

+----+----+----+----+

| id | af | bf | cf |

+----+----+----+----+

|  1 |  1 |  2 |  1 |

|  2 |  2 |  1 |  2 |

|  3 |  3 |  3 |  3 |

| 15 | 11 | 12 | 12 |

| 11 | 12 | 11 | 11 |

| 13 | 13 | 16 | 13 |

| 14 | 14 | 17 | 14 |

+----+----+----+----+

7 rows in set (0.00 sec)

// 按自增ID是有序的(LIMIT数小于表记录数)

// 按唯一自增ID无序

MySQL [test]>SELECT * FROM tableA2 WHERE id>=1 LIMIT 7;

+----+----+----+----+

| id | af | bf | cf |

+----+----+----+----+

|1|  1 |  2 |  1 |

|  2 |  2 |  1 |  2 |

|3|  3 |  3 |  3 |

|  5 | 15 |  5 |  5 |

|11| 12 | 11 | 11 |

| 13 | 13 | 16 | 13 |

|14| 14 | 17 | 14 |

+----+----+----+----+

7 rows in set (0.00 sec)

// 按自增ID是无序的(LIMIT数等于或大于表记录数)

// 按唯一自增ID有序

MySQL [test]>SELECT * FROM tableA2 WHERE id>=1 LIMIT 8;

+----+----+----+----+

| id | af | bf | cf |

+----+----+----+----+

|1|  1 |  2 |  1 |

|  2 |  2 |  1 |  2 |

|3|  3 |  3 |  3 |

| 15 | 11 | 12 | 12 |

|11| 12 | 11 | 11 |

| 13 | 13 | 16 | 13 |

|14| 14 | 17 | 14 |

|  5 | 15 |  5 |  5 |

+----+----+----+----+

8 rows in set (0.00 sec)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值