精华内容
下载资源
问答
  • 福哥答案2020-10-11:#福大大架构师每日一题# 简单回答:执行计划调优、语句调优、索引调优、设计调优、业务调优。 中级回答:时间有限,回答得不全面。 1.执行计划调优 熟读执行计划,十大参数。...比如查询多个表的

    福哥答案2020-10-11:#福大大架构师每日一题#

    简单回答:执行计划调优、语句调优、索引调优、设计调优、业务调优。

    中级回答:时间有限,回答得不全面。
    1.执行计划调优
    熟读执行计划,十大参数。

    2.语句调优
    尽量全值匹配。
    范围条件放最后。
    Null/Not 有影响。

    3.索引调优
    最佳左前缀法则。
    不在索引列上做任何操作。
    覆盖索引尽量用。
    不等于要甚用。
    Like查询要当心。
    字符类型加引号。
    OR改UNION效率高。

    4.设计调优
    数据量大,可以分库分表。
    并行执行多条sql。比如查询多个表的数据总条数,可以优化成并行执行。
    主从同步,读写分离。

    5.业务调优
    调整业务。比如分页,以前可以指定页数区查询,可以改成下拉形式。
    返回大数据量,应该考虑需求是否合理。


    评论

    展开全文
  • 1、选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。...

    1、选取最适用的字段属性

    MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。

    例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至使用VARCHAR这种类型也是多余的,因为CHAR(6)就可以很好的完成任务了。同样的,如果可以的话,我们应该使用MEDIUMINT而不是BIGIN来定义整型字段。

    另外一个提高效率的方法是在可能的情况下,应该尽量把字段设置为NOTNULL,这样在将来执行查询的时候,数据库不用去比较NULL值。

    对于某些文本字段,例如“省份”或者“性别”,我们可以将它们定义为ENUM类型。因为在MySQL中,ENUM类型被当作数值型数据来处理,而数值型数据被处理起来的速度要比文本类型快得多。这样,我们又可以提高数据库的性能。

    ----------------------------

    2、使用连接(JOIN)来代替子查询(Sub-Queries)

    MySQL从4.1开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。

    使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询可以被更有效率的连接(JOIN)..替代。例如,假设我们要将所有没有订单记录的用户取出来,可以用下面这个查询完成:

    SELECT * FROM  customerinfo

    WHERE CustomerID NOT in(SELECT CustomerID FROM salesinfo)

    如果使用连接(JOIN)..来完成这个查询工作,速度将会快很多。尤其是当salesinfo表中对CustomerID建有索引的话,性能将会更好,查询如下:

    SELECT * FROM customerinfo

    LEFT JOIN salesinfo ON customerinfo.CustomerID = salesinfo.CustomerID

    WHERE salesinfo.CustomerID IS NULL

    连接(JOIN)..之所以更有效率一些,是因为MySQL不需要在内存中创建临时表来完成这个逻辑上的需要两个步骤的查询工作。

    创建索引的原则:http://blog.csdn.net/csdnones/article/details/50412603

    ------------------

    3、使用联合(UNION)来代替手动创建的临时表

    MySQL从4.0的版本开始支持union查询,它可以把需要使用临时表的两条或更多的select查询合并的一个查询中。在客户端的查询会话结束的时候,临时表会被自动删除,从而保证数据库整齐、高效。使用union来创建查询的时候,我们只需要用UNION作为关键字把多个select语句连接起来就可以了,要注意的是所有select语句中的字段数目要想同。下面的例子就演示了一个使用UNION的查询。

    SELECT Name,Phone FROM client UNION

    SELECT Name,BirthDate FROM author UNION

    SELECT Name,Supplier FROM product

    表:

    ----------------------------

    数据库优化:

    https://www.cnblogs.com/cy163/archive/2008/12/25/1362145.html

    展开全文
  • 1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化) 2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合 3、如果...

    1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)


    2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合


    3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度


    4、针对数量大的表进行历史表分离(如交易流水表)


    5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,mysql有自带的binlog实现 主从同步


    6、explain分析sql语句,查看执行计划,分析索引是否用上,分析扫描行数等等


    7、查看mysql执行日志,看看是否有其他方面的问题

    展开全文
  • 1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化) 2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合 3、如果以上...

    1、查看sql是否涉及多表的联表或者子查询,如果有,看是否能进行业务拆分,相关字段冗余或者合并成临时表(业务和算法的优化)

    2、涉及链表的查询,是否能进行分表查询,单表查询之后的结果进行字段整合

    3、如果以上两种都不能操作,非要链表查询,那么考虑对相对应的查询条件做索引。加快查询速度

    4、针对数量大的表进行历史表分离(如交易流水表)

    5、数据库主从分离,读写分离,降低读写针对同一表同时的压力,至于主从同步,mysql有自带的binlog实现 主从同步

    6、explain分析sql语句,查看执行计划,分析索引是否用上,分析扫描行数等等

    7、查看mysql执行日志,看看是否有其他方面的问题

    展开全文
  • 2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。   3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:  ...
  • [TOC]请简述项目中优化MySQL语句执行效率的方法,从哪些方面入手,SQL语句性能如何分析?分析查询速度记录慢查询日志分析查询日志,使用pt-query-digest工具进行分析使用show profileset peofiling=1; # 服务器上...
  • [TOC]# 请简述项目中优化MySQL语句执行效率的方法,从哪些方面入手,SQL语句性能如何分析?# 分析查询速度+ 记录慢查询日志分析查询日志,使用`pt-query-digest`工具进行分析+ 使用`show profile`set profiling=1; #...
  • 请简述项目中优化MySQL语句执行效率的方法,从哪些方面入手,SQL语句性能如何分析?分析查询速度·记录慢查询日志分析查询日志,使用pt-query-digest工具进行分析·使用show profileset peofiling=1; # 服务器上执行...
  • [TOC]请简述项目中优化MySQL语句执行效率的方法,从哪些方面入手,SQL语句性能如何分析?分析查询速度记录慢查询日志分析查询日志,使用pt-query-digest工具进行分析使用show profileset peofiling=1; # 服务器上...
  • 使用EXPLAIN关键字可以模拟查询优化器执行SQL查询语句,从而知道MySQL数据库是如何处理SQL语句,以及应该哪个方面对SQL语句进行优化 作用 查看表的读取顺序 数据读取的操作类型 哪些索引可以使用 实际使用了那些...
  • 请问一个百万级的mysql表,进行普通全表查询大概需要多长时间,怎么我的数据库表只有60万条数据,却需要查询2分钟以外,我应该从哪些方面进行优化
  • 那么,我们应该从哪些方面进行sql优化呢? 1:查询需要使用的字段,避免使用select *进行查询; SELECT studentId from student; 2:需要经常查询的字段建立合适的索引,提高查询效率; create index index_...
  • 通过前面的章节我们掌握了 Scheme 和 索引的优化,最后我们来看一下查询优化。为了优化查询,我们必须先了解查询是怎样执行的,然后探讨优化器在哪些方面做得还不足,以帮助 MySql 更有效的执行查询。优化数据访问在...
  • 通过前面的章节我们掌握了 Scheme 和 索引的优化,最后我们来看一下查询优化。为了优化查询,我们必须先了解查询是怎样执行的,然后探讨优化器在哪些方面做得还不足,以帮助 MySql 更有效的执行查询。优化数据访问在...
  • 目录    什么是性能?...我感到问题笼统,有些无从下手,于是简单地回答道:“找到程序性能的瓶颈位置,进行针对性的优化,比如为数据库查询效率低的地方适当添加索引等……”。对方的表情告诉我,这个答案...
  • SQL语句优化

    2017-08-30 00:26:00
    【数据库优化的目的】 1.避免出现页面访问错误  由于数据库连接timeout产生页面5XX错误。  由于慢查询造成页面无法加载。...【从哪些方面进行数据库优化】 【SQL及索引优化】【如何发...
  • MySQL性能优化经验

    2017-12-19 17:04:44
    【数据库优化的目的】 1.避免出现页面访问错误  由于数据库连接timeout产生页面5XX错误。 ... 由于慢查询造成页面无法加载。... 很多数据库问题都是由于低效的查询引起的。...【从哪些方面进行数据库优化
  • 优化mysql的内存

    2021-02-19 15:22:23
    Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句...
  • SQL语句优化--重点

    2017-09-09 22:00:12
    01_SQL语句优化 【数据库优化的目的】 1.避免出现页面访问错误  由于数据库连接timeout产生页面5XX错误。  由于慢查询造成页面无法加载。... 由于阻塞造成数据无法提交...【从哪些方面进行数据库优化】   【S
  • Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句...
  • 首先看一道真题请简述项目中优化SQL语句执行效率的方法,从哪些方面,SQL语句性能如何分析?考点分析:这道题主要考察的是查找分析SQL语句查询速度慢的方法延伸考点:优化查询过程中的数据访问优化长难的查询语句...
  • Mysql占用CPU过高的时候,该从哪些方面下手进行优化? 占用CPU过高,可以做如下考虑: 1)一般来讲,排除高并发的因素,还是要找到导致你CPU过高的哪几条在执行的SQL,show processlist语句,查找负荷最重的SQL语句...
  • 3.会从哪些方面进行MySQL数据库进行优化? 答案解析如下: 一、请例举三个你曾经处理过的让你印象深刻的问题? 二、处理过哪些MySQL主从复制异常? 1.数据库服务负载过大(产生问题,原因,解决办法) ...

空空如也

空空如也

1 2 3 4 5 6
收藏数 119
精华内容 47
关键字:

从哪些方面进行查询优化