Archive

Archive for the ‘sql优化’ Category

复杂关联SQL的优化

September 16th, 2014 Comments off

昨天处理了一则复杂关联SQL的优化,这类SQL的优化往往考虑以下四点:

第一.查询所返回的结果集,通常查询返回的结果集很少,是有信心进行优化的;

第二.驱动表的选择至关重要,通过查看执行计划,可以看到优化器选择的驱动表,从执行计划中的rows可以大致反映出问题的所在;

第三.理清各表之[……]

Read more

Categories: mysql, sql优化 Tags:

RDS最佳实践(四)—如何处理Mysql的子查询

August 4th, 2014 Comments off

早上值班同事在旺旺群里面贴了一条非常复杂的SQL,用户从本地迁移到RDS Mysql出现严重性能下降,同样的数据和表结构下,在本地的数据库上只要不到1s的时间,但是在rds上好几分钟都没响应。

碰到这类问题需要考虑以下一些因素:

a.数据库的版本不同(不同的版本优化器策略不一样,或者异构[……]

Read more

Categories: database, sql优化 Tags:

化繁为简-优化sql

March 29th, 2013 Comments off

下面的一段对话取自于和用户的一段旺旺聊天记录,在征得用户的同意后,放到我的blog中,希望更多的人能够看见,分享是一件快乐的事情;同时也想借此来说明一些问题,有时候试图用一条sql完成所有的业务逻辑可能会遇到麻烦,需要对复杂的sql进行一些拆分,可能会得到更好的效果,好吧,废话少说,进入正题:[……]

Read more

Categories: database, mysql, RDS, sql优化 Tags:

MySql sql优化之order by desc/asc limit M

February 4th, 2013 No comments

Order by desc/asc limit M是我在mysql sql优化中经常遇到的一种场景,其优化原理也非常的简单,就是利用索引的有序性,优化器沿着索引的顺序扫描,在扫描到符合条件的M行数据后,停止扫描;看起来非常的简单,但是我经常看到很多性能较差的sql没有利用这个优化规律,下面将结合一些[……]

Read more

Categories: database, sql优化 Tags:

mysql sql优化之straight_join

January 17th, 2013 No comments

在oracle中可以指定的表连接的hint有很多:ordered hint 指示oracle按照from关键字后的表顺序来进行连接;leading hint 指示查询优化器使用指定的表作为连接的首表,即驱动表;use_nl hint指示查询优化器使用nested loops方式连接指定表和其他行源,[……]

Read more

Categories: database, sql优化 Tags:

浅谈mysql的子查询

September 22nd, 2012 No comments

mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会将子查询改写,通常情况下,我们希望由内到外,也就是先完成子查询的结果,然后在用子查询来驱动外查询的表,完成查询,但是恰恰相反[……]

Read more

Categories: database, sql优化 Tags:

SQL优化的一些总结

August 6th, 2012 No comments

SQL的优化是DBA日常工作中不可缺少的一部分,记得在学生时期,曾经在ITPUB上看到一篇帖子,当时楼主在介绍SQL优化的时候,用一个公式来讲解他在做sql优化的时候遵循的原则:

          T=S/V(T代表时间,S代表路程,V代表速度)

S指SQL所需访问的资源总量,V指SQL单位时[……]

Read more

Categories: database, mysql, sql优化 Tags:

执行计划错误—索引统计信息的不准确

May 10th, 2012 No comments

mysql在生成执行计划的时候,需要根据索引的统计信息进行一个估算,计算出成本最低的索引;
但是mysql索引统计信息的采集默认8个page:
root@test 08:48:52>show global variables like ‘%samp%’;
+———–[……]

Read more

Categories: database, sql优化 Tags:

一则优化案例

May 6th, 2012 No comments

昨晚收到客服MM电话,一用户反馈数据库响应非常慢,手机收到load异常报警,登上主机后发现大量sql执行非常慢,有的执行时间超过了10s
优化点一:
SELECT * FROM `sitevipdb`.`game_shares_buy_list` WHERE price>=’2.00′ O[……]

Read more

Categories: database, sql优化 Tags:

生产库中遇到mysql的子查询

October 21st, 2011 No comments

使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mysql在子查询的处理上有可能会让你大失所望,在我们的生产系统上就由于碰到了这个问题:

select  i_[……]

Read more

Categories: database, sql优化 Tags: