加入收藏 | 设为首页 | 会员中心 | 我要投稿 衢州站长网 (https://www.0570zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

MySQL中的主键和rowid,看似简单,其实有一些使用陷阱需要注意

发布时间:2019-10-12 03:16:23 所属栏目:建站 来源:杨建荣
导读:副标题#e# 大家在MySQL中我们可能听到过rowid的概念,但是却很难去测试实践,不可避免会有一些疑惑,比如: 1)如何感受到rowid的存在 2)rowid和主键有什么关联关系 3)在主键的使用中存在哪些隐患 4)如何来理解rowid的潜在瓶颈并调试验证 今天要和大家一

再可以实现一个初步的思路。

  1. mysql> select _rowid,count(*)from redis_backup_result;  
  2. +--------+----------+  
  3. | _rowid | count(*) |  
  4. +--------+----------+  
  5. | 117 | 41036 |  
  6. +--------+----------+  
  7. 1 row in set (0.03 sec) 

然后继续升华一些,借助rownum来实现,当然在MySQL中原生不支持这个特性,需要间接实现。

  1. mysql> SELECT @rowno:=@rowno+1 as rowno,r._rowid from redis_backup_resultr ,(select @rowno:=0) t limit 20;  
  2. +-------+--------+  
  3. | rowno | _rowid |  
  4. +-------+--------+  
  5. | 1 | 117 |  
  6. | 2 | 118 |  
  7. | 3 | 119 |  
  8. | 4 | 120 |  
  9. | 5 | 121 |  
  10. | 6 | 122 |  
  11. | 7 | 123 |  
  12. | 8 | 124 |  
  13. | 9 | 125 |  
  14. | 10 | 126 |  
  15. | 11 | 127 |  
  16. | 12 | 128 |  
  17. | 13 | 129 |  
  18. | 14 | 130 |  
  19. | 15 | 131 |  
  20. | 16 | 132 |  
  21. | 17 | 133 |  
  22. | 18 | 134 |  
  23. | 19 | 135 |  
  24. | 20 | 136 |  
  25. +-------+--------+  
  26. 20 rows in set (0.00 sec) 

写一个完整的语句,如下:

  1. mysql> SELECT @rowno:=@rowno+1 as rowno,r._rowid ,backup_date,count(*)  
  2. from redis_backup_result r ,(select @rowno:=0) t ;  
  3. +-------+--------+-------------+----------+  
  4. | rowno | _rowid | backup_date | count(*) |  
  5. +-------+--------+-------------+----------+  
  6. | 1 | 117 | 2018-08-14 | 41061 |  
  7. +-------+--------+-------------+----------+  
  8. 1 row in set (0.02 sec) 

通过这个案例,可以很明显发现是第1行的记录,然后做了count(*)的操作。

当然我们的目标是要掌握rowid和主键的一些关联关系,所以我们也复盘一下主键使用中的隐患问题。

问题2rowid和主键有什么关联关系

在学习MySQL开发规范之索引规范的时候,强调过一个要点:每张表都建议有主键。我们在这里来简单分析一下为什么?

除了规范,从存储方式上来说,在InnoDB存储引擎中,表都是按照主键的顺序进行存放的,我们叫做聚簇索引表或者索引组织表(IOT),表中主键的参考依据如下:

(1)显式的创建主键Primary key。

(2)判断表中是否有非空唯一索引,如果有,则为主键。

(3)如果都不符合上述条件,则会生成UUID的一个隐式主键(6字节大)。

(编辑:衢州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

推荐文章
    热点阅读