博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
8.2.1-优化SELECT语句
阅读量:6705 次
发布时间:2019-06-25

本文共 1600 字,大约阅读时间需要 5 分钟。

 

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.处理锁问题,你的查询速度可能会被其他正在同一时间使用表的会话影响.

posted on
2018-10-28 23:33 阅读(
...) 评论(
...)

转载于:https://www.cnblogs.com/shuiyonglewodezzzzz/p/9867955.html

你可能感兴趣的文章
android的armeabi和armeabi-v7a
查看>>
android自己定义控件系列教程-----仿新版优酷评论剧集卡片滑动控件
查看>>
emacs的常用配置备份
查看>>
lvs之 lvs+nginx+tomcat_1、tomcat_2+redis(lvs dr 模式)
查看>>
让js中的函数只有一次有效调用的三种常用方法
查看>>
python实现算24的算法
查看>>
Extending a logical volume in a virtual machine running Red Hat or Cent OS (1006371)
查看>>
操作xml格式的字符串的方法(C#)
查看>>
[转]MySQL索引详解(1)
查看>>
poj 3040 Allowance 贪心
查看>>
分享27款最佳的复古风格 WordPress 主题
查看>>
ASP.NET 打包多CSS或JS文件以加快页面加载速度的Handler
查看>>
让“是男人就下到100层”在Android平台上跑起来
查看>>
hdu 1010:Tempter of the Bone(DFS + 奇偶剪枝)
查看>>
文件和目录之umask函数
查看>>
ecmall的物流配送体系改造
查看>>
[Python]网络爬虫(九):百度贴吧的网络爬虫(v0.4)源码及解析(转)
查看>>
hdu4292Food(最大流Dinic算法)
查看>>
手机网站判断及跳转
查看>>
[LeetCode] Text Justification
查看>>