SQL优化(变多次维护为一次维护

  Sql优化分为:DDL、DML、DQL

  一、DDL优化

    1 、通过禁用索引来提供导入数据性能 。 这个操作主要针对有数据库的表,追加数据

      //去除键

      alter table test3 DISABLE keys;

      //批量插入数据

      insert into test3 select * from test;

      //恢复键

      alter table test3 ENABLE keys;

    变多次索引维护为一次索引维护

       2、 关闭唯一校验

      set unique_checks=0  关闭

      //批量插入数据

      insert into test3 select * from test;

      set unique_checks=1  开启

    变多次唯一校验为一次唯一校验

        3、修改事务提交方式(导入)

      set autocommit=0   关闭# false

      //批量插入

      set autocommit=1   开启 true

    变多次事务提交为一次事务提交

  二、DML优化

    insert into test (name) values(2);

    insert into test values(1,3);

    insert into test values(1,4);

    //合并多条为一条 mybatis的批量操作:

    insert into test values(1,2),(1,3),(1,4)

    变多次事务提交为一次事务提交

  三、DQL优化

    (1)   1 order by优化

      1、多用索引排序

      2、普通结果排序(非索引排序)Filesort

      索引本身就是排序的,所以多使用索引。

    (2)    group by优化

      查询某个时间的付款总和

      explain

      select DATE_FORMAT(payment_date,'%Y-%m'),sum(amount) from payment GROUP BY DATE_FORMAT(payment_date,'%Y-%m') ;

      explain

      select DATE_FORMAT(payment_date,'%Y-%m'),sum(amount) from payment GROUP BY DATE_FORMAT(payment_date,'%Y-%m') order by null;

      在group by是使用order by null,取消默认排序

    (3) subQuery嵌套优化

       在客户列表找到不在支付列表的客户

       #在客户列表找到不在“支付列表”的客户 , 查询没买过东西的客户

       explain

       select * from customer where customer_id not in (select DISTINCT customer_id from payment);

       explain

          select * from customer c left join payment p on(c.customer_id=p.customer_id) where p.customer_id is null   -- 这种是基于“索引”外链

    (4) or优化

      在两个独立索引上使用or的性能优于

      1、 or两边都是用索引字段做判断,性能好!!

      2、 or两边,有一边不用,性能差

      3、 如果employee表的name和email这两列是一个复合索引,但是如果是 :name='A' OR email='B' 这种方式,不会用到索引!

    (5)   limit优化

      select film_id,description from film order by title limit 50,5;

      select a.film_id,a.description from filqm a inner join (select film_id from film order by title limit 50,5)b on a.film_id=b.film_id

  30种sql语句优化:https://www.cnblogs.com/Little-Li/p/8031295.html

MySQL单机优化---SQL优化的更多相关文章

  1. (6)MySQL进阶篇SQL优化(MyISAM表锁)

    1.MySQL锁概述 锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源 (如 CPU.RAM.I/O 等)的抢占以外,数据也是一种供许多用户共享的资源.如何保证数 据并 ...

  2. [转]Mysql中的SQL优化与执行计划

    From : http://religiose.iteye.com/blog/1685537 一,如何判断SQL的执行效率? 通过explain 关键字分析效率低的SQL执行计划. 比如: expla ...

  3. 二,mysql优化——sql优化基本概念

    1,SQL优化的一般步骤 (1)通过show status命令了解各种SQL执行效率. (2)通过执行效率较低的SQL语句(重点select). (3)通过explain分析低效率的SQL语句的执行情 ...

  4. MySQL专题3 SQL 优化

    这两天去京东面试,面试官问了我一个问题,如何优化SQL 我上网查了一下资料,找到了不少方法,做一下记录 (一). 首先使用慢查询分析  通过Mysql 的Slow Query log 可以找到哪些SQ ...

  5. MySQL 学习四 SQL优化

    MySQL逻辑架构: 第一层:客户端层,连接处理,授权认证,安全等功能.   第二层:核心层,查询解析,分析,优化,缓存,内置函数(时间,数学,加密),存储过程,触发器,视图   第三层:存储引擎.负 ...

  6. MySQL系列(七)--SQL优化的步骤

    前面讲了如何设计数据库表结构.存储引擎.索引优化等内存,这篇文章会讲述如何进行SQL优化,也是面试中关于数据库肯定会被问到的, 这些内容不仅仅是为了面试,更重要的是付诸实践,最终用到工作当中 之前的M ...

  7. (2)MySQL进阶篇SQL优化(show status、explain分析)

    1.概述 在应用系统开发过程中,由于初期数据量小,开发人员写SQL语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL语句开始逐渐显露出性能问题,对生产环境的影响也 ...

  8. (3)MySQL进阶篇SQL优化(索引)

    1.索引问题 索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数 的SQL性能问题.本章节将对MySQL中的索引的分类.存储.使用方法做详细的介绍. 2.索引的存储分类 ...

  9. (4)MySQL进阶篇SQL优化(常用SQL的优化)

    1.概述 前面我们介绍了MySQL中怎么样通过索引来优化查询.日常开发中,除了使用查询外,我们还会使用一些其他的常用SQL,比如 INSERT.GROUP BY等.对于这些SQL语句,我们该怎么样进行 ...

随机推荐

  1. Linux 中 Buffer/Cache内存占用过高解决方法

    在Linux系统中,我们经常用free命令来查看系统内存的使用状态.在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态: 这里的默认显示单位是kb,我的服务器是128G内存,所以数字显 ...

  2. 4-网页,网站,微信公众号基础入门(配置网站--下载安装PHP)

    https://www.cnblogs.com/yangfengwu/p/10979101.html 这一节咱看一下如何在原先的基础上实现网站 首先去下载 PHP https://windows.ph ...

  3. 网络编程——select介绍

    一.select函数简介 select一般用在socket网络编程中,在网络编程的过程中,经常会遇到许多阻塞的函数,网络编程时使用的recv, recvfrom.connect函数都是阻塞的函数,当函 ...

  4. 50: Luogu P4568 分层图

    分层图最短路模板 #include <iostream> #include <cstdio> #include <cstdlib> #include <cti ...

  5. 树形DP入门题目推荐以及解析

    关于树形DP几道入门题目 今天恶补树形DP,感觉海星. 其实挺简单的. 介绍几道例题,我会的. 1.洛谷P1352 没有上司的舞会 我的一篇题解 我们可以考虑每一个节点都是有两种情况. 一个是被邀请: ...

  6. linux 系统添加jdk环境变量

    export JAVA_HOME=/usr/local/jdk1..0_79 export JAVA_BIN=$JAVA_HOME/bin export PATH=$PATH:$JAVA_BIN ex ...

  7. Java中的锁原理、锁优化、CAS、AQS详解!

    阅读本文大概需要 2.8 分钟. 来源:jianshu.com/p/e674ee68fd3f 一.为什么要用锁? 锁-是为了解决并发操作引起的脏读.数据不一致的问题. 二.锁实现的基本原理 2.1.v ...

  8. Characters with Hash[签到题]

    目录 题目地址 题干 代码和解释 参考 题目地址 Characters with Hash(ACM-ICPC 2018 徐州赛区网络预赛) 题干 代码和解释 本题很好理解,通过一个seed,将输入的定 ...

  9. [Beta]Scrum Meeting#9

    github 本次会议项目由PM召开,时间为5月14日晚上10点30分 时长20分钟 任务表格 人员 昨日工作 下一步工作 木鬼 撰写博客整理文档 撰写博客整理文档 swoip 为适应新功能调整布局前 ...

  10. dubbo学习笔记(二)dubbo中的filter

    转:https://www.cnblogs.com/cdfive2018/p/10219730.html dubbo框架提供了filter机制的扩展点(本文基于dubbo2.6.0版本). 扩展接口 ...