Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1348002
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: Mysql/postgreSQL

2015-05-09 19:52:16

   查询的最高原则,如果没有使用应用层缓存,每次查询尽量少产生无用的记录,包括无用的字段,毕竟传输结果集都比较费时,而且就算在mysql服务器本身查询无用记录,也是比较耗CPU和内存,更可能是浪费磁盘IO。
   查询的过程中,有直接在服务层就直接过滤,或者在存储引擎层过滤,例如:where条件中如果带有索引,则是在引擎层过滤了,在服务器层过滤的话,则表示数据必须读上来
   查询分解会比较好,例如:关联查询分解,复杂查询分解,大查询分解。大查询可能会锁表时间比较长,占用资源时间比较长,关联查询可能会产生很多重复的查询。
   查询的语句的复杂度,尽量在应用层客户端完成,不要将复杂性放到服务器,毕竟应用层的灵活性比数据库服务器要高 
   查询优化分静态优化和动态优化
         静态优化,就是在查询还未执行时,就已经优化了,类似编译时优化,如:根据统计信息以及语句本身
         动态优化,主要是执行期的优化
   查询语句本身需要进行查询计划分析
         判定查询中的索引是否失效
   但是排序和分组不知道是在存储引擎层还是服务器层完成的?
   查询缓存与buffer pool什么关系?
阅读(1156) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~