在以下链接
http://www.programmerinterview.com/index.php/database-sql/selectivity-in-sql-databases/
作者写道,由于“SEX”列只有两个可能的值,因此它对 10000 条记录的选择性是;根据给定的公式; 0.02%。
但我的问题是数据库系统如何知道这个特定列有这么多唯一值?数据库系统不需要至少扫描整个表一次吗?或者数据库系统会以其他方式了解这些唯一值?
最佳答案
首先,您应用的公式有误。性别的选择性(在给出的示例中)为 50% 而不是 0.02%。这意味着每个值大约有 50% 的时间出现。
数据库跟踪这一点的一般方法是使用一种叫做“统计”的东西。这些是关于所有表并由优化器使用的度量。有时,信息也可以通过列上的索引提供。
关于sql - 数据库系统如何知道特定列有多少个不同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20788324/