数据库术语中的基数和选择性

基数

在数据库中,某一列的唯一键(distinct Keys)的数量叫作基数。

比如性别列,该列只有男女之分,所以这一列基数是2。主键列的基数等于表的总行数。

查看某个列的基数。

select count(distinct column_name)  from table_name;

选择性

列的基数与表中总行数的比值再乘以100%就是某个列的选择性。

列的选择性可以衡量数据库索引能够帮助缩小对表中特定值的搜索范围的程度。

查看某个列的选择性。

select Concat((count(distinct column_name) / count(*))*100,'%') from table_name;

我们知道索引最重要的目的之一是尽可能地缩小匹配行的初始候选值,从而减少io,提升查询性能。所以通常来说索引的选择性越高则查询效率越高,因为选择性高的索引可以让数据库在查找时过滤掉更多的行。

了解列的选择性的作用

帮助我们更好地创建复合索引。

在建立复合索引时,一般我们要把选择性更高的列放在前面,以尽可能地缩小匹配行的初始候选值。

帮助我们更好地创建前缀索引。

比如在mysql中,建立前缀索引的意义在于相对于整列建立索引,前缀索引仅仅是选择该列的部分字符作为索引,减少索引的字符可以节约索引空间,从而提高索引效率,但这样也会降低索引的选择性。

建立合理前缀索引的诀窍在于要选择足够长的前缀以保证较高的选择性,同时又不能太长(以便节约空间)。

那么

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值