Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2794925
  • 博文数量: 471
  • 博客积分: 7081
  • 博客等级: 少将
  • 技术积分: 5369
  • 用 户 组: 普通用户
  • 注册时间: 2012-01-04 21:55
文章分类

全部博文(471)

文章存档

2014年(90)

2013年(69)

2012年(312)

分类: Mysql/postgreSQL

2012-07-03 22:37:51

explain sql语句

//根据返回的信息,我们可知,sql语句是否使用索引,从多少记录中取出,可以看到排序的方式.

 

 

 

l  在什么列上添加索引比较合适

 

 

l较频繁的作为查询条件字段应该创建索引

  select * from emp where empno = 1

l唯一性太差的字段不适合单独创建索引,即使频繁作为查询条件

  select * from emp where *** = ''

l更新非常频繁的字段不适合创建索引

  select * from emp where logincount = 1

不会出现在WHERE子句中字段不该创建索引

 

 

索引的原理说明

 

l  没有索引为什么会慢?

l  使用索引为什么会快?

l  索引的代价

  1. 磁盘占用
  2. dml(update delete insert)语句的效率影响

 

l  使用索引的注意事项

查询要使用索引最重要的条件是查询条件中需要使用索引。

下列几种情况下有可能使用到索引:
1
,对于创建的多列索引,只要查询条件使用了最左边的列,索引一般就会被使用。
2
,对于使用like的查询,查询如果是  %aaa 不会使用到索引

       aaa% 会使用到索引。

 

下列的表将不使用索引:
1
,如果条件中有or,即使其中有条件带索引也不会使用。
2
,对于多列索引,不是使用的第一部分,则不会使用索引。
3
like查询是以%开头
4
,如果列类型是字符串,那一定要在条件中将数据使用引号引用起来。否则不使用索引。
5
,如果mysql估计使用全表扫描要比使用索引快,则不使用索引。

 

l  如何检测你的索引是否有效

 

结论: Handler_read_key 越大越少

Handler_read_rnd_next 越小越好

 

 

阅读(7254) | 评论(0) | 转发(0) |
0

上一篇:内连接 外连接

下一篇:栈的应用数制转换

给主人留下些什么吧!~~