8.2.1-优化SELECT语句
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语句的更多相关文章
- 优化Select 语句的原则
优化Select 语句的原则 -摘抄<SQL Server 2005 性能监测与优化> Select 语句是数据库应用系统中最常用的语句之一,Select 语句设计的好坏直接影响到应用程序 ...
- mysql5.7官网直译SQL语句优化--select语句优化
8.2 sql语句优化 大致内容如下: 8.2.1:SELECT语句的优化 8.2.2:优化子查询,派生表和试图引用 8.2.3:优化INFORMATION_SCHEMA查询 8.2.4:优化数据改变 ...
- 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 ...
- mysql性能优化之数据库级别优化--优化sql语句
一 优化SELECT语句 1.1 WHERE子句优化 本文暂时只讨论可以处理WHERE子句的优化,下面的一些实例使用SELECT语句,但是相同的优化同样适用DELETE和UPDATE语句中的WHER ...
- 原来select语句在MySQL中是这样执行的!看完又涨见识了!这回我要碾压面试官!
大家好,我是冰河~~ MySQL作为互联网行业使用最多的关系型数据库之一,与其免费.开源的特性是密不可分的.然而,很多小伙伴工作了很多年,只知道使用MySQL进行CRUD操作,这也导致很多小伙伴工作多 ...
- 优化 SQL SELECT 语句性能
SELECT语句的性能调优有时是一个非常耗时的任务,在我看来它遵循帕累托原则.20%的努力很可能会给你带来80%的性能提升,而为了获得另外20%的性能提升你可能需要花费80%的时间. 检查索引:在SQ ...
- 如何用 SQL Tuning Advisor (STA) 优化SQL语句
在Oracle10g之前,优化SQL是个比较费力的技术活,不停的分析执行计划,加hint,分析统计信息等等.在10g中,Oracle推出了自己的SQL优化辅助工具: SQL优化器(SQL Tuning ...
- Expert 诊断优化系列------------------语句调优三板斧
前面三篇通过CPU.内存.磁盘三巨头,讲述了如何透过现在看本质,怎样定位服务器三巨头反映出的问题.为了方便阅读给出链接: SQL SERVER全面优化-------Expert for SQL Ser ...
- ORACLE常用SQL优化hint语句
在SQL语句优化过程中,我们经常会用到hint,现总结一下在SQL优化过程中常见Oracle HINT的用法: 1. /*+ALL_ROWS*/ 表明对语句块选择基于开销的优化方法,并获得最佳吞吐量, ...
随机推荐
- 字符串CRC校验
字符串CRC校验 <pre name="code" class="python"><span style="font-family: ...
- DynArrayToVariant DynArrayFromVariant复制动态数
type intArr=array of Integer; procedure TfrmMainDA.Button2Click(Sender: TObject);var aa:intArr;bb:in ...
- Delphi调用DLL中的接口
问题描述: 具体问题就是在隐式使用接口变量后,在FreeLibrary执行后,就会出现一个非法访址的错误. 这个错误的原因就是在FreeLibrary后,DLL以的代码均为不可用状态,而在代码执行完整 ...
- Myeclipse 2017安装
一.下载 Myeclipse官网下载地址:http://www.myeclipsecn.com/download/ 二.安装 安装详细步骤省略,仅仅是一路下一步即可,博主默认安装到了C盘,注意:安装完 ...
- mysql 高可用架构
什么是高可用 不可用出现的情况 如何实现高可用 第一种方法 第二种方法 MMM 和 MHA MHA更好的处理方式 安装步骤 优缺点 读写分离
- java中关于File类的细说
File类是我们接触的比较多的类,当初学习是真是傻傻分不清啊.今天就总结一下file的一些比较不好区分的地方. 首先:当然就是构造方法 File f = new File("文件路径&quo ...
- NET Core Kestrel部署HTTPS
NET Core Kestrel部署HTTPS ASP.NET Core配置 Kestrel部署HTTPS.现在大部分网站已经部署HTTPS,大家对于安全越来越重视. 今天简单介绍一下ASP.NET ...
- js页面滚动时层智能浮动定位实现
直接上代码 $.fn.smartFloat = function (className) { var position = function (element) { var top = element ...
- 测试教程网.unittest教程.7. 各种断言方法
From: http://www.testclass.net/pyunit/assert/ 背景 unittest支持各种断言方法. 断言列表 官方文档 方法 检查点 assertEqual(a, b ...
- 学习笔记之JavaScript
JavaScript 教程 | 菜鸟教程 http://www.runoob.com/js/js-tutorial.html JavaScript 是 Web 的编程语言. 所有现代的 HTML 页面 ...