miaojian0620
miaojian0620
2021-01-11 12:48
采纳率: 14.3%
浏览 95

mysql二级索引提问,当没有创建主键的情况下是如何进行查询的

MySQL的二级索引(非聚集索引)存储的是主键的值,因此为进行二次查询,但是当没有指定主键的情况下是如何查询的呢?是直接定位到数据的行的物理位置吗?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • feichitianxia
    木子雷 2021-01-17 00:01
    已采纳

    mysql中没有手动指定主键的话,也会自动生成一个rowid(自增的)作为默认主键的,然后在非聚簇索引树的叶子节点中存储的就是自动生成的默认主键值了。

    点赞 评论
  • feichitianxia
    木子雷 2021-01-13 11:40

    1、首先mysql的默认存储引擎innodb的数据和索引是存放在一个文件中的,查询时没有指定主键,则在文件中进行全数据扫描;如果指定了主键,则根据文件中的索引扫描直接得到行数据;

    2、mysql的 MYISAM存储引擎的数据和索引是存储到不同的文件中的,当查询时没有指定主键,则全表(全数据文件)扫描,如果指定了主键,则先进行索引文件筛选,得到数据记录在数据文件中的具体物理地址后,再到数据文件中进行读取;

    点赞 评论
  • miaojian0620
    miaojian0620 2021-01-16 21:44

    我的意思是有非聚集索引,但是没有指定主键。根据非聚集索引进行查询是如何执行查询的

    点赞 评论

相关推荐