前缀索引
前缀索引在 MySQL 中是一种优化索引存储的方式,特别适用于长字符串字段。通过只索引字段的前 N 个字符,可以减少索引占用的存储空间。然而,前缀索引可能会降低索引的 选择性,影响查询性能。下面我将详细解释为什么前缀索引会降低索引选择性及其对性能的影响。
什么是索引选择性?
索引选择性(Index Selectivity)指的是索引在查询时区分不同记录的能力,用于衡量索引的效率。选择性越高,查询时匹配的记录越少,查询效率越高。
选择性公式:
索引选择性 = (索引字段中唯一值的数量) / (表中记录的总数)
理想的选择性是接近 1(例如唯一索引),意味着每次查询几乎可以通过索引唯一地确定一行记录。
低选择性意味着索引匹配的记录较多,查询时会扫描更多行,性能较差。
举例说明
假设有一列 VARCHAR(100) 类型的字段,其中存储了用户的电子邮件地址,如下所示:
id email
1