MySQL中的基数是什么?

时间:2010-04-02 10:46:11

标签: mysql

MySQL中的基数是什么?请用简单的非技术性语言解释。

如果任何表的索引详细信息显示字段的基数为group_id为11,那么这意味着什么?

8 个答案:

答案 0 :(得分:114)

最大基数:所有值都是唯一的

最小基数:所有值都相同

有些列称为高基数列,因为它们具有约束(如唯一),禁止您在每一行中放置相同的值。

基数是一种影响数据聚类,排序和搜索能力的属性。因此,它是DB中查询规划者的重要衡量标准,它是一种启发式方法,可用于选择最佳方案。

答案 1 :(得分:32)

维基百科总结cardinality in SQL如下:

  

SQL(结构化查询语言)中,术语基数是指{{3}的特定列(属性)中包含的uniqueness数据值} database。基数越低,列中重复的元素越多。因此,具有最低可能基数的列对于每一行将具有相同的值。 SQL数据库使用基数来帮助确定给定查询的最佳table

答案 2 :(得分:24)

它是对索引中唯一值数量的估计。

对于具有单个主键列的表,基数通常应等于表中的行数。

More information

答案 3 :(得分:14)

根据Kami链接的维基百科文章,它与列值的唯一性基本相关。

为什么重要的是要考虑它会影响索引策略。由于索引的选择性不足以使用,因此只有两个可能的值索引低基数列的点数很少。

答案 4 :(得分:9)

基数越高,行的区分越好。差异化有助于导航较少的分支以获取数据。

因此,较高的统治价值意味着:

  • 更好的读取查询性能;
  • 更大的数据库大小;
  • 写入查询的性能更差,因为隐藏的索引数据正在更新。

答案 5 :(得分:6)

在数学术语中,基数是一组值中的值的计数。集合只能包含唯一值。 一个例子是集合“A”。

设置“A”为:A = {1,2,3} - 该集的基数为| 3 |。

如果设置“A”包含5个值A = {10,21,33,42,57},则基数为| 5 |。

在mysql的上下文中,这意味着表列的基数是该列的唯一值的计数。如果您正在查看主键列的基数(例如table.id),那么该列的基数将告诉您该表包含多少行,因为表中的每一行都有一个唯一的ID。 您不必在该表上执行“COUNT(*)”以查明它有多少行,只需查看基数。

答案 6 :(得分:4)

以简单的方式,基数是表中的行数或元组数。列数称为" degree"

答案 7 :(得分:4)

来自manual

  

基数

     

索引中唯一值数量的估计值。这是   通过运行ANALYZE TABLE或myisamchk -a进行更新。基数是   根据存储为整数的统计信息计算,因此值不是   即使对于小桌子也必须精确基数越高,   MySQL在进行连接时使用索引的可能性越大。

analysis from Percona

Dictionary