8.2.1 Optimizing SELECT Statements
8.2.2 Optimizing Data Change Statements
8.2.3 Optimizing Database Privileges
8.2.4 Optimizing INFORMATION_SCHEMA Queries
8.2.5 Other Optimization Tips 一个核心的数据库应用逻辑是通过SQL语句执行,直接通过一个解释器或者通过一个API提交。 调优原则在这个章节是帮助加快各种类型的MySQL 应用。指导方针覆盖SQL操作 读和写数据, 后台负载对于SQL操作,操作被用于特定的场景比如数据库监控 8.2.1 Optimizing SELECT Statements 优化SELECT 语句 查询,以SELECT 语句的形式, 执行所有的查询操作在数据库。 调优那些操作是重中之重, 无论是完成秒级响应对于动态的web页面, 或者需要数小时来产生巨大的隔夜报告 除了SELECT 语句,调整基数对于查询也应用与比如CREATE TABLE...AS SELECT, INSERT INTO...SELECT, and WHERE clauses in DELETE statements. 那些语句有额外的性能考虑因为它们组合了写操作和读查询操作 8.2.1.1 Speed of SELECT Statements 加速SELECT 语句 优化查询的主要考虑因素是: 1. 让一个慢的 SELECT ... WHERE 查询的更快,第一件事情是检查是否你能增加索引。 设置indexes 在列用于WHERE 子句,来加速评估,过滤,和最后的检索结果。 来避免浪费磁盘空间,构造一个小的索引集来加速很多相关的查询在你的应用里 索引是尤其重要的对于查询 涉及不同的表,使用功能比如关联和外键。 你可以使用EXPLAIN 语句来决定 使用哪个索引用于查询 2. 隔离和调整查询的任何部分,比如 一个函数调用, 会消耗执行时间。 取决于查询是如何构建的,一个函数可以在结果集中的每行都调用一次,甚至 表里每一行都调用一次,大大的降低效率 3.减少 全表扫描数量在你的查询里,特别是对于大的表 4. 保持表的统计信息是新的通过使用ANALYZE TABLE 语句周期性的,这样优化器有构造一个有效的查询执行计划的信息 5.了解调优技巧,索引技术,配置参数,特定的存储引擎对于每个表 InnoDB和MyISAM 有参考设置对于启动和维持高性能在查询里 6.特别的,在MySQL 5.6.4和以上版本, 你可以优化单个查询事务对于InnoDB表 7.避免改变查询方式 会让它很难理解,尤其是如果优化器做了一些相同的转换 8.如果一个性能问题不是容易解决的通过基本参考, 调查特定查询的内容细节,通过阅读执行计划和调整你的索引,WHERE 子句,关联子句等等 (当你达到一定的专业水平,读取执行计划可能是你对于每个查询的第一步) 9. 调整 内存区域的大小和属性用于cache, 有效的使用InnoDB buffer pool,MyISAM key cache,和MySQL query cache, 重复查询运行更快因为结果是从内存里检索第2次和随后的时间 10.即使对于一个查询 使用cache 内存区域很快,你仍可能进一步优化 它们使用更少的内存, 让你的应用更加的可扩展性。可扩展性意味着 你的应用可以处理更多的并发用户,大的请求,而不需要经历性能的大幅下降 11. 处理locking 问题, 你的查询的速度可能被其他session 同时访问表有影响

8.2.1.1 Speed of SELECT Statements 加速SELECT 语句的更多相关文章

  1. Laravel - Union + Paginate at the same time? and another problem----1222 The used SELECT statements have a different number of columns (SQL: (select count(*) as aggregate from

    ### 这是这几天,碰到的一个比较头疼的问题 使用union all联合查询,同时laravel 生成分页,但发生报错? QueryException : SQLSTATE The used from ...

  2. Go语言规格说明书 之 select语句(Select statements)

    go version go1.11 windows/amd64 本文为阅读Go语言中文官网的规则说明书(https://golang.google.cn/ref/spec)而做的笔记,介绍Go语言的 ...

  3. MySQL: Speed of INSERT Statements

    Speed of INSERT Statements To optimize insert speed, combine many small operations into a single lar ...

  4. The used SELECT statements have a different number of columns???

    今天我们组就我一个人留守在这里修复bug了,有点小悲伤啊,他们都问我能不能hold得住啊,我当然能hold得住啊: 在看一个入库的存储过程中,在数据库运行的时候是没问题的,项目已启动,进行入库操作就是 ...

  5. Mysql -- The used SELECT statements have a different number of columns

    这是因为使用union的两个SQL语句产生的记录的表结构不一致. 必须是结构完全一致的记录集合才可以使用UNION. 以上就是两个表的字段不一样,导致,所以大家可以检查下. 可以 将 select * ...

  6. string strSQL = "Select * From Employees;Select * from Customers";执行两次查询

    SqlCommand对象的字符串SQL命令可以做多个,以查询为例,用到SqlDataReader的一些方法,如ExecuteReader(),Read()(一条命令内的移动至下一记录),NextRes ...

  7. select count(*)和select count(1)

    一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的 假如表沒有主键(Primary key), 那么count(1)比count(*)快, 如果有主键的話 ...

  8. select count(*)和select count(1)的区别

    一般情况下,Select Count (*)和Select Count(1)两着返回结果是一样的 假如表沒有主键(Primary key), 那么count(1)比count(*)快, 如果有主键的話 ...

  9. 仅Firefox中A元素包含Select时点击Select不能选择option

    这是在使用京东的一个日期组件时碰到的bug,重现bug的代码精简如下 <!DOCTYPE HTML> <html> <head> <title> 仅Fi ...

随机推荐

  1. 从APP消息推送所理解的观察者模式

    #1.什么是观察者模式? 观察者模式=(出版者+订阅者)模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象.这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能 ...

  2. Gmail邮件功能那么强大,GMail被封,在国内怎么用gmail收邮件?

    IT圈子里最热门的话题一定是:gmail被封,该怎么办?gmail由于强大的邮件功能,ITer一定是人手一个or多个,之前想要收发gmail使用imap或SMTP方式是可以在国内正常使用的,目前ima ...

  3. LSI MegaCli 命令使用2

    #/opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL 查raid级别#/opt/MegaRAID/MegaCli/MegaCli64 -AdpAll ...

  4. ASP.NET-FineUI开发实践-1

    用.Net开发3年,主要接触资产管理,生产流程,质量追溯,.Net在这方面还是很靠谱的.2月低接触FineUI,那时版本是3.0+,第一眼让我想起了ExtJs,其实就是用.Net封装了ExtJs让AS ...

  5. 新浪微博开放平台OAuth授权解决方案(含代码)

    前几日一位朋友项目中需要使用新浪微博的接口,故和这位朋友一同研究了新浪微博开放平台上面所提供的资料,首先要使用这些接口是需要用户登录并且授权的,新浪微博开放平台其实是提供两种授权方式的,第一种是:OA ...

  6. Javascript 追本溯源

    一直以来对Javascript的继承关系都是通过死记硬背下来的,对于一个理科生,喜欢逻辑思维的人来讲,死记硬背特别头痛,且理科生对于能够死记硬背下来的东西也很容易忘记,不知道其他理科生童鞋们是否如此, ...

  7. SVN版本日志对话框命令使用指南

    日志使用指南 http://tortoisesvn.net/docs/nightly/TortoiseSVN_zh_CN/tsvn-dug-showlog.html

  8. Android Http请求失败解决方法

    1.MainActivity.java 文件中的onCreate方法改成如下: @SuppressLint("NewApi") @Override protected void o ...

  9. linux下查看已经安装的jdk 并卸载jdk

    一.查看Jdk的安装路径: whereis javawhich java (java执行路径)echo $JAVA_HOME echo $PATH 备注:如果是windows中,可以使用: set j ...

  10. ssh key报but this does not map back to the address – POSSIBLE BREAK-IN ATTEMPT!错误

    在/etc/hosts 文件加上对方的主机名  ip地址,可以ping通主机名即可.