MySQL SQL优化
一、优化数据库的一般步骤:
(A) 通过 show status 命令了解各种SQL的执行频率。
(B) 定位执行效率较低的SQL语句,方法两种:
事后查询定位:慢查询日志:--log-slow-queries=[file_name],
事中查询状态:show processlist命令查看当前进行的线程,包括锁表情况
(C) 通过EXPLAIN 或 DESC 分析低效SQL的执行计划


(D) 确定问题并采取优化措施
二、索引问题
(A) MyISAM存储引擎的表的数据和索引是自动分开存储的,各自独立的一个文件;InnoDB存储引擎的表的数据和索引在一个表空间里,但可以有多个文件组成。
(B) MySQL中索引的存储类型目前只有BTREE和HASH两种,具体和表引擎有关。支持前缀索引。
(C) 对于多列索引,最左前缀的成立条件要注意,必须是最左边的列。
(D) like查询,是常量且通配符不是第一个字符时,才能使用索引。
(E) 对大文件进行搜索,建议采用全文索引,
(F) 如果列名是索引,使用 column_name is null 将使用索引。
(G) or分割的条件中,如果不是两个都有索引,就不会使用索引。
(H) 如果列类型是字符串,一定记得把字符串常量值用引号括起来,否则不使用索引。
三、查看索引使用情况
如果索引有效,Handler_read_key的值将很高,代表了一个行被索引值读的次数,
Handler_read_rnd_next 表示数据文件读下一行的请求数,值高意味着查询运行低效。
四、两个简单实用的优化方法
(A) 定期分析表和检查表
五、常见SQL的优化
(A) 大批量插入数据,
通过控制索引的开启和关闭来提升速度。
控制导入数据的排列顺序来提升速度。
通过开启和关闭唯一性校验来提升速度。
通过开启和关闭自动提交属性来提升速度。
(B) 通过 order by null 消除排序的时间消耗
(C) 优化嵌套查询:连接查询比子查询更有效率:子查询需要在内存中建立临时表。
(D) or 条件的每个条件列都必须有索引,才使用索引。
(E) 使用SQL提示,
MySQL SQL优化的更多相关文章
- mysql sql优化实例
mysql sql优化实例 优化前: pt-query-degist分析结果: # Query 3: 0.00 QPS, 0.00x concurrency, ID 0xDC6E62FA021C85B ...
- Mysql SQL优化&执行计划
SQL优化准则 禁用select * 使用select count(*) 统计行数 尽量少运算 尽量避免全表扫描,如果可以,在过滤列建立索引 尽量避免在where子句对字段进行null判断 尽量避免在 ...
- 18.Mysql SQL优化
18.SQL优化18.1 优化SQL语句的一般步骤 18.1.1 通过show status命令了解各种SQL的执行频率show [session|global] status; -- 查看服务器状态 ...
- mysql sql优化及注意事项
sql优化分析 通过slow_log等方式可以捕获慢查询sql,然后就是减少其对io和cpu的使用(不合理的索引.不必要的数据访问和排序)当我们面对具体的sql时,首先查看其执行计划A.看其是否使用索 ...
- MySQL sql优化(摘抄自文档)
前言 有人反馈之前几篇文章过于理论缺少实际操作细节,这篇文章就多一些可操作性的内容吧. 注:这篇文章是以 MySQL 为背景,很多内容同时适用于其他关系型数据库,需要有一些索引知识为基础. 优化目标 ...
- MySQL SQL优化之in与range查询【转】
本文来自:http://myrock.github.io/ 首先我们来说下in()这种方式的查询.在<高性能MySQL>里面提及用in这种方式可以有效的替代一定的range查询,提升查询效 ...
- MySql Sql 优化技巧分享
有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度.两个表关联,且关联的字段都是主键,查询的字段是唯一索引. sql如下: SELECT p_it ...
- mysql sql优化实例1(force index使用)
今天和运维同学一块查找mysql慢查询日志,发现了如下一条sql: SELECT sum(`android` + ios) total,pictureid,title,add_time FROM `j ...
- 一个MySql Sql 优化技巧分享
有天发现一个带inner join的sql 执行速度虽然不是很慢(0.1-0.2),但是没有达到理想速度.两个表关联,且关联的字段都是主键,查询的字段是唯一索引. sql如下: SELECT p_it ...
随机推荐
- NOIP2010pj三国游戏[博弈论]
题目描述 小涵很喜欢电脑游戏,这些天他正在玩一个叫做<三国>的游戏. 在游戏中,小涵和计算机各执一方,组建各自的军队进行对战.游戏中共有 N 位武将(N为偶数且不小于 4),任意两个武将之 ...
- NOIP2012国王游戏
题目描述 恰逢 H 国国庆,国王邀请 n 位大臣来玩一个有奖游戏.首先,他让每个大臣在左.右 手上面分别写下一个整数,国王自己也在左.右手上各写一个整数.然后,让这 n 位大臣排 成一排,国王站在 ...
- Django博客功能实现—文章评论功能
功能:在A网页提交一个评论Forms_B,提交之后自动刷新页面,能够显示刚刚的画面思路:利用一个已经创建的表单,通过视图让其在网页中表现出来,填写玩信息之后提交,会提交到一个新的视图里面去做接受,接受 ...
- JAVA中如何使用SORT从大到小排
import java.util.Arrays;import java.util.Collections;public class Test { public static void main(Str ...
- 访问服务端的HttpProxy
tip:加密部分暂时先注释掉 package com.zqc.share.manager.framework; import java.net.HttpURLConnection; import ja ...
- ubuntu14.04为安装fcitx卸载ibus后出现system setting (系统设置)中图标消失的问题
最近在系统为ubuntu14.04原版中,安装fictx.按照以往的经验应先把ibus卸载干净,否则可能会有冲突.因此惯性思维驱使,先卸载ibus,然后安装fcitx,但是问题出现了,system s ...
- 系统修改利器XueTr
Windows系统修改利器XueTr 周银辉 在Windows下如果遇到某些进程弄死结束不了,某些文件弄死删不掉,拷贝不出来 (可能是因为你没有管理员权限,可能是因为人家是病毒,可能是系统保护文件,可 ...
- CentOS7安装MySQL、Redis、RabbitMQ
系统版本 CentOS Linux release 7.2.1511 (Core) MySQL安装 一.下载mysql的repo源 wget http://repo.mysql.com/mysql-c ...
- JS组件系列——Bootstrap右键菜单解决方案:ContextMenu
前言:有段时间没发表随笔了,过个年人都变得懒了.新年刚来上班,今天正好得空,将去年遗留的两个小组件总结记录下.有朋友跟我说:你的bootstrap组件要能够形成一个可以满足一般项目需求的系列组件,才有 ...
- 微信快速开发框架(六)-- 微信快速开发框架(WXPP QuickFramework)V2.0版本上线--源码已更新至github
4月28日,已增加多媒体上传及下载API,对应MediaUploadRequest和MediaGetRequest ------------------------------------------ ...