分类:
2011-03-03 12:26:47
给varchar型字段添加前缀索引,提高查询数据效率
前言
两个数据库合并数据,选择失真率较低的nickname和email字段做基准。直接测试,发现更新效率非常低。
explain select uid from database_my.user where email = 'examples@yahoo.com' and uid = 0 order by userid limit 1;
explain select uid from database_my.user where uid = 0 and email = 'examples@yahoo.com' order by userid limit 1;
这两个语句的执行计划相同,都是先查找有索引的uid字段,然后查找email字段,目前email字段还没有索引,于是新建索引
CREATE INDEX idx_user_email ON user (email(5));
在测试库索引建立的耗时还可以接受。于是在生产库加上索引。索引所占的磁盘空间不大。
更改后合并执行速度提高。完成数据合并。
考虑到以后对表执行DML操作时该索引的维护成本,以及日常查询中用到该字段的机率,决定取消索引。
DROP index idx_user_email on user;