Chinaunix首页 | 论坛 | 博客
  • 博客访问: 542298
  • 博文数量: 76
  • 博客积分: 2990
  • 博客等级: 少校
  • 技术积分: 827
  • 用 户 组: 普通用户
  • 注册时间: 2008-09-26 10:53
文章分类

全部博文(76)

文章存档

2011年(47)

2010年(13)

2009年(5)

2008年(11)

分类:

2011-03-03 12:26:47

varchar型字段添加前缀索引,提高查询数据效率


前言 


两个数据库合并数据,选择失真率较低的nicknameemail字段做基准。直接测试,发现更新效率非常低。


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;

阅读(4324) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~