面试题答案
一键面试创建前缀索引
在MySQL中,可以使用CREATE INDEX
语句来创建前缀索引。语法格式如下:
CREATE INDEX index_name ON table_name (column_name(prefix_length));
其中,index_name
是索引名称,table_name
是表名,column_name
是要创建索引的列名,prefix_length
是前缀长度。
例如,假设有一个employees
表,包含first_name
列,要为first_name
列的前3个字符创建前缀索引,可以使用以下语句:
CREATE INDEX idx_first_name ON employees (first_name(3));
影响索引选择性的主要因素
- 列的基数:基数指的是列中不同值的数量。基数越高,索引选择性越好。例如,在
gender
列(只有男
和女
两个值)上创建索引,其选择性较差;而在email
列(每个值几乎都不同)上创建索引,选择性较好。 - 数据分布:数据分布是否均匀也会影响索引选择性。如果数据分布不均匀,例如某一列中大部分值都相同,只有少数几个不同的值,那么索引的选择性就会受到影响。例如,在一个表示用户等级的列中,90% 的用户都是普通等级,只有10% 是高级等级,那么这个列的索引选择性就不如数据分布更均匀的列。
- 索引列的长度:对于前缀索引,前缀长度的选择很重要。如果前缀长度过短,可能导致不同值的数量过少,降低索引选择性;如果前缀长度过长,虽然选择性会提高,但会增加索引占用的空间。需要根据实际数据情况选择合适的前缀长度,以平衡索引选择性和空间占用。