8.2.1.优化 SELECT 语句

由SELECT 语句组成的查询,在数据中执行所有的查询.对这类语句的调优排在首位,无论是调优动态web网页的二级响应时间,还是减少
生成巨大隔夜报告的时间.

而且,对SELECT语句调优的技术同样适用 CREATE TABLE...AS SELECT, INSERT INTO...SELECT,DELETE 中带有where的语句.
这些语句还有其他的性能开销,因为这些操作在读操作的时候也进行写操作.

MySQL Cluster 支持join pushdown优化,join 操作会被发送实际的MySQL Cluster 数据结点,这样可以分布join操作来达到并行操作.

更多关于此优化的信息,查看 Conditions for NDB pushdown joins.

加快 SELECT 语句

优化查询的主要方法有:

1.为了让慢的SELECT ... WHERE 查询变快,首要做的事是检查你是否能够加一个索引.在where 语句中使用到的列上加索引,能加快预估,过滤
    和最后取回结果的速度.为避免浪费磁盘空间,构建一个小的索引来加快你应用程序中大多数相关的查询.

索引对于引用其他的表的查询也很重要,比如使用类似 joins,foreign keys的查询.你可以使用EXPLAN 语句来查看SELECT语句使用了哪个索引.
      查看Section 8.3.1,"How MySQL Uses Indexes" 和 Section 8.8.1,"Optimizing Queries with EXPLAIN"

2.分离,调整查询的各个子部分,比如函数调用会花费许多的时间.一个函数会对结果集中每行都调用一次,或者对表中的所有行只调用一次---这能大幅度提升效率,
这取决于查询的组成.

3.让全表查询最小化,特别是对于大数据表.

4.周期执行ANALYZE TABLE 语句保持表统计信息最新,这样优化器才有足够的信息去生成高效的执行计划

5.学习调优技术,索引相关技术,和存储引擎的配置参数.InnoDB和MyISAM都有系列手册让查询高效执行.
更多信息,查看 Section 8.5.6,"Optimizing InnoDB Querire" 和 Section 8.6.1,"Optimizing MyISAM Queries".

6.通常,在MySQL5.6.4和更高版本中,你能够通过只读事务来优化InnoDB数据表的单个查询事务.Section 8.5.3,"Optimizing InnoDB Read-Only Transactions"

7.避免转换会让查询语句变成难以理解,特别是优化器会进行同样的转换时.

8.如果通过基础手册很难解决性能问题,阅读EXPLAN 执行计划的输出,深入内部详情,调整你的索引(where 语句,join语句).
如果你的技艺已经很高超,阅读执行计划或许是你的优化每个查询的第一步

9.调整MySQL用于缓存的内存大小.有效的使用InnoDB buffer pool,MySIAM key cache,和MySQL查询缓存,重复执行查询比较快,因为在第一次查询后,结果都从从内存中取回(MySQL自身的查询缓存).

10.即使一个查询使用缓存已经运行的够快,你或许会继续优化让它使用更少的空间来缓存,让你的程序更具有可扩展性。可扩展性意味你的程序可以同时容纳更多的用户,
更大的请求,但是不会有太大的性能落差。

11.处理锁问题,你的查询速度可能会被其他正在同一时间使用表的会话影响.

8.2.1-优化SELECT语句的更多相关文章

  1. 优化Select 语句的原则

    优化Select 语句的原则 -摘抄<SQL Server 2005 性能监测与优化> Select 语句是数据库应用系统中最常用的语句之一,Select 语句设计的好坏直接影响到应用程序 ...

  2. mysql5.7官网直译SQL语句优化--select语句优化

    8.2 sql语句优化 大致内容如下: 8.2.1:SELECT语句的优化 8.2.2:优化子查询,派生表和试图引用 8.2.3:优化INFORMATION_SCHEMA查询 8.2.4:优化数据改变 ...

  3. 8.2.1.1 Speed of SELECT Statements 加速SELECT 语句

    8.2.1 Optimizing SELECT Statements 8.2.2 Optimizing Data Change Statements 8.2.3 Optimizing Database ...

  4. mysql性能优化之数据库级别优化--优化sql语句

    一  优化SELECT语句 1.1 WHERE子句优化 本文暂时只讨论可以处理WHERE子句的优化,下面的一些实例使用SELECT语句,但是相同的优化同样适用DELETE和UPDATE语句中的WHER ...

  5. 原来select语句在MySQL中是这样执行的!看完又涨见识了!这回我要碾压面试官!

    大家好,我是冰河~~ MySQL作为互联网行业使用最多的关系型数据库之一,与其免费.开源的特性是密不可分的.然而,很多小伙伴工作了很多年,只知道使用MySQL进行CRUD操作,这也导致很多小伙伴工作多 ...

  6. 优化 SQL SELECT 语句性能

    SELECT语句的性能调优有时是一个非常耗时的任务,在我看来它遵循帕累托原则.20%的努力很可能会给你带来80%的性能提升,而为了获得另外20%的性能提升你可能需要花费80%的时间. 检查索引:在SQ ...

  7. 如何用 SQL Tuning Advisor (STA) 优化SQL语句

    在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等.在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning ...

  8. Expert 诊断优化系列------------------语句调优三板斧

    前面三篇通过CPU.内存.磁盘三巨头,讲述了如何透过现在看本质,怎样定位服务器三巨头反映出的问题.为了方便阅读给出链接: SQL SERVER全面优化-------Expert for SQL Ser ...

  9. ORACLE常用SQL优化hint语句

    在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...

随机推荐

  1. skype在线状态代码详解

    前不久微软宣布了MSN并入skype的消息,这么一来面向海外客户的同学除了选择客服系统之外,在页面上添加一个skype聊天按钮也是很不错的噢,它添加方便.功能强大.而且可以判断出客户是否安装了skyp ...

  2. linux 创建软链接

    ln –s 源文件 目标文件

  3. STL基础--基本介绍

    为什么要使用C++标准库 /* * 为什么使用C++标准库: * 1. 代码重用,不用重新造轮子 * 2. 效率(快速,且使用更少的资源). 现代C++编译器经常对C++标准库的代码有优化 * 3. ...

  4. C/C++程序CPU问题分析

    转载地址:http://www.10tiao.com/html/473/201606/2651473094/1.html   程序的CPU问题是另外一类典型的程序性能问题,很多开发人员都受到过程序CP ...

  5. bzoj4933: 妙

    Description Mr.董已经成长为一个地区的领袖,真是妙啊.董所在的地区由n个小区域构成,这些小区域构成了一棵树,每个小 区域都有一个重要程度,一个连通块的重要程度为其包含的小区域重要程度之和 ...

  6. 如何修改CSV文件的分隔符

    Excel转成CSV文件,在Windows下默认的列表分隔符是逗号(,).在某些情况下,我们可能需要更改列表分隔符,如某个单元格内容包含逗号,而这可能导致使用它的程序出错,这样就需要更改列表分隔符:再 ...

  7. 远程服务器安装mysql数据库

    https://www.cnblogs.com/renjidong/p/7047396.html 1.新开的云服务器,需要检测系统是否自带安装mysql # yum list installed | ...

  8. idea 配置全局 maven

    Idea默认的全局设置,如Maven等 每次使用IDEA打开一个新的项目,maven都需要重新配置,非常不开心,所以需要有个默认全局配置,打破不开心 配置完就OK了 原文链接:https://www. ...

  9. [UE4]移动小地图

    让玩家角色永远处于小地图的中心位置. 一.将RoundMiniMap的StaticMiniMap使用Canvas Panel包裹,StaticMiniMap的锚点Anchors设置为中心对齐 二.新建 ...

  10. orcale 函数wm_concat不存咋lob值使用zh_concat 替换

    create or replace TYPE zh_concat_im AUTHID CURRENT_USER AS OBJECT ( CURR_STR VARCHAR2(32767), STATIC ...