面试题答案
一键面试业务场景
- 模糊查询:当经常使用
LIKE 'keyword%'
这样以某个词开头的模糊查询时,前缀索引可以提高查询效率。例如,用户在电商平台搜索框输入关键词,系统需要快速匹配出相关产品名称,此时前缀索引能发挥作用。 - 排序:如果需要按照
product_name
的部分内容进行排序,前缀索引也有助于提升排序性能。
确定合适前缀长度
- 数据分布分析:通过
SELECT COUNT(DISTINCT LEFT(product_name, length)) / COUNT(*) FROM products;
来计算不同前缀长度下的唯一值比例。这里length
从较小值如3开始逐渐增加。当唯一值比例接近全列唯一值比例时,此时的前缀长度比较合适。 - 权衡查询性能和索引空间:较长的前缀长度能提供更精确的匹配,但会占用更多索引空间,影响插入和更新性能。要在查询性能提升和索引存储开销之间找到平衡。
对插入、更新操作的影响
- 插入操作:
- 性能下降:插入新记录时,数据库不仅要写入数据,还要更新前缀索引。较长的前缀长度使得索引更新成本更高,导致插入操作变慢。
- 更新操作:
- 性能下降:如果更新涉及
product_name
列,同样需要更新前缀索引。而且可能因为索引结构的调整,导致其他相关记录的索引位置变化,进一步增加更新操作的开销,使得更新性能降低。
- 性能下降:如果更新涉及