码迷,mamicode.com
首页 > 数据库 > 详细

面试之SQL

时间:2016-04-28 19:45:22      阅读:195      评论:0      收藏:0      [点我收藏+]

标签:

1. 查询性能优化:从数据库查询数据时,你一定遇到过查询很慢的情况,请问你是怎么处理的。

答:

遇到的问题描述:是遇到过这种情况,我们给客户做过一款软件,日志库搜集了6000万条数据,显示、查询时候慢的要命。

查询慢的原因:通常情况下有几种情况可能导致,①硬件资源不足(不考虑);②数据量确实很大(不考虑);③并发量大,架构有问题;④数据表设计有问题;⑤查询语句存在性能问题。

可行的解决方案:

①:升级硬件资源,内存、存储、磁盘、CPU

②:数据量大分两种情况:

  • 表中数据多,这个是正常情况(处理的就是这种情况);
  • 查询出来的结果数据量大,这种情况可以分页加载或触发式加载或者加载一部分。

③:并发量大,如果是服务器经常处于高负荷状态,那就需要增加服务器,做负载均衡;如果数据库读写都很频繁,那么可以读写分离。

④:表设计有问题,没有创建索引,没有创建对索引。索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。创建索引是提高查询速度最有效的方式。创建索引应遵守一定的规则:

  • 在经常进行条件查询,但是没有指定为外键的列上建立索引,而不经常查询的字段则由优化器自动生成索引。
  • 在频繁用到排序、分组的字段上建立索引
  • 在相同值少的字段上建立索引
  • 不能创建索引过多,否则会对写数据造成影响

⑤:查询Sql语句写的有问题,这个是最常见的导致性能问题的原因,有以下几种情况:

  • 主查询或子查询中使用Select * 查询或查询过多冗余字段
  • 一个查询语句中,主查询和子查询语句中频繁使用排序或分组(Order By,Group By)
  • 语句写的不当,导致Sql放弃使用索引查询,包括:对null进行判断;使用!=或<>操作符;使用连接符or;使用in、not in;使用模糊查询like;
  • 联表查询时,有的数据被反复查询

所以我在对查询进行优化的时候,我首先重新检查表的索引是否创建的合理,然后根据以上的几点,检查查询语句是否存在可改进的地方,然后运行Profiler,进行查询跟踪优化。(尽量快速的描述)

 

面试之SQL

标签:

原文地址:http://www.cnblogs.com/zhangxin-20130314/p/5443739.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!