mysql 主键索引如何创建_mysql – 如何为具有组合主键的表创建索引?

多列索引

对于多列索引,索引从左到右工作.

鉴于您的主键:

(col_a, col_b)

以下是可以使用的情况:

> col_a:是的.在col_a上搜索时可以使用索引,因为从左到右,col_a是第一列.

> col_a& col_b:是的.在col_a和col_b上搜索时,也可以使用索引,因为从左到右,它是col_a,然后是col_b.

> col_b :: NO.仅搜索col_b时,无法使用索引,因为索引中的第一列是col_a,我们不能跳过列.

给定一个更大的索引:

(col_a, col_b, col_c)

> col_a:是的

> col_a& col_b:是的

> col_a& col_b& col_c:是的

> col_a& col_c:没有.无法跳过索引中的col_b.

> col_b :: NO.不能跳过col_a.

> col_c :: NO.不能跳过col_a.

> col_b& col_c:没有.无法跳过索引中的col_a.

覆盖索引

要将索引用作“covering” index,从左到右的模式仍然适用.

给定索引(col_a,col_b),您可以同时选择col_a和col_b,但只搜索col_a(或col_a和col_b),MySQL可以使用索引进行搜索和检索数据,因为col_a和col_b都是在索引中.这样可以节省实际行数据的行程,因为这些值存储在索引中.

给定索引(col_a,col_b,col_c),如果仅搜索col_a并且能够使用覆盖索引返回col_c,则无法SELECT col_a和col_c,因为您无法跳过索引中的col_b.相反,MySQL会访问实际的表数据.但是,如果要同时搜索col_a和col_b,则可以选择SELECT col_a和col_c并将其用作覆盖索引.

“覆盖”索引中的主键

每个二级索引都包含索引中的主键.

与覆盖索引相关的单列索引可以被认为是以下模式中的多列索引.给定主键(col_a,col_b),col_b上的单个列索引,实际上看起来像这样(col_b)(col_a,col_b).

给定上面的单列索引,您仍然可以选择col_a和col_b,并在col_b上搜索,索引可以用作覆盖索引.由于主键包含col_a,因此MySQL仍然可以使用索引返回两列而无需访问实际的表数据.

如果我想搜索col_b怎么办?

给定主键(col_a,col_b),如果要仅搜索col_b,则应在col_b上添加单个列索引.如上所述,如果要返回col_b和col_a,它仍可用作覆盖索引.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值