mysql 优化表_mysql里sql优化和表结构优化

开启慢查询日志 计入sql

show variables like 'slow_query_log';//慢查询查看状态 OFF未开启 ON开启

show variables like '%log%';//没有使用索引的sql计入慢查询日志中

set global log_queries_nor_using_indexes = on;

//开启log_queries_nor_using_indexes 为ON 记录未使用索引的查询

show variables like 'long_query_time';

//超过多少时间就记录到慢查询中

//开启慢查询

set global slow_query_log = on;

//慢查询日志的位置

show variables like 'slow%';

left join :eft join是以A表的记录为基础的,A可以看成左表,B可以看成右表,left join是以左表为准的.

换句话说,左表(A)的记录将会全部表示出来,而右表(B)只会显示符合搜索条件的记录(例子中为: A.aID = B.bID).

right join:和left join的结果刚好相反,这次是以右表(B)为基础的,A表不足的地方用NULL填充.

inner join:这里只显示出了 A.aID = B.bID的记录.这说明inner join并不以谁为基础,它只显示符合条件的记录.

sql索引优化

explain select 字段 from 表名 ;

table 代表当前表

type 显示类型 重要列 !性能最好到最坏排序 const(主键唯一索引查找),eq_reg(范围查找),ref(一个表基于一个索引查找),range(基于索引范围查找),index(对索引的扫描),all(表扫描)

possible_keys 当前表可用到的索引有哪些,如果为null就是没有可能的索引

key 实际使用的索引,为null就是没有可能的索引

key_len 使用索引的长度 越小越好

ref 显示索引的哪一列被使用

rows mysql必须检查用来返回请求的数据行数

extra 返回值

using filesort:查询需要优化,mysql需要进行额外步骤,文件排序进行优化

using temporary :查询需要优化,mysql需要创建一个临时表来存储结果

sql优化例子 *

Where查询条件,on内外连接时候用,as作为别名,in查询某值是否在某条件里

max优化方法:查找最大的 最后的

select max(字段data) from 表;

优化方法:在data上建立索引

create index idx_data on 表(字段data) ;

count优化方法:全部

查找2006-2007的数量全部的数量

优化方法:

select count(year='2006' or year='2007') from 表;

查找2006-2007的分开的数量

优化方法:

select count(year='2006' or null),count(year='2007' or null) from 表;

子查询优化:

select * from t where t.id in (select t1.tid from t1);

优化方法: 需要把子查询优化为join查询 join on 后边的条件只针对附表

select t.id from t jion t1 on t.id = t1.tid;

去重distinct

select distinct t.id from t jion t1 on t.id = t1.tid;

group by查询

select actor.first_name,actor.last_name, count(*) from filem_actor inner actor using(actor_id) group by filem_actor.actor_id;

优化后group by查询

select actor.first_name,actor.last_name,c.cnt from actor inner join (select actor_id,count(*)as cnt from film_actor group by actor_id ) as c using(actor_id);

limit优化方法:

select film_id,dd from film order by title limit 600,5;//从第600行开始的5条记录

优化后

select film_id,dd from film where film_id >600 and film_id <=605 oder by film_id limit 1,5;

索引优化例子:

1在where从句,group by从句,order by从句,on从句中出现的列

2索引字段越小越好

3离散度大的列放到联合索引前面

优化查询效率,对插入 修改 删除语句有影响

索引越多查询越慢

如何找到重复索引

列子:

id primay key主键索引 unique(id)又生成一个唯一索引 这就重复索引!

如何找到zongyu索引

多个索引的前缀列是相同的

id primay key主键索引 又生成一个key(name,id)联合索引!

表结构优化

如何选择合适的数据类型:

1.可以存下数据的最小的数据类型

2.使用简单的数据类型。 int比varchar在mysql处理上简单

3.尽可能的使用not null定义字段

4.尽量少于text类型,非用时考虑分表

范式化优化

数据表结构

传递函数依赖关系 商品名称-》分类-》分类描述

商品名称 价格 重量 有效期 分类 分类描述

把一张表分成3张表1商品表商品名称 价格 重量 有效期2分类表 分类 分类描述3关系表 **

商品名称 分类

反范式化优化

操作前:

用户表:

用户id 姓名 电话 地址 邮编

订单表:

订单id 用户id 下单时间 支付类型 订单状态

订单商品表:

订单id 商品id 商品数量 商品价格

商品表:

商品id 名称 描述 过期时间

操作后:

用户表:

用户id 姓名 电话 地址 邮编

订单表:合并一个表中查询

订单id 用户id 下单时间 支付类型 订单状态 订单价格 用户名 电话 地址

订单商品表:

订单id 商品id 商品数量 商品价格

商品表:

商品id 名称 描述 过期时间

执行sql查询订单信息:

select a.用户名,a.电话,a.地址,a.订单id,a.订单价格 from 订单表 a

表的垂直拆分:

例:

id

title varvhar

description text

..字段

如果表中有包含 title和description text数据类型的话,拆分出去

用拆分后的付加表中的表id关联拆分前的表id

付加表:

id

title varvhar

description text

表的水平拆分:

解决表单的数据量过大

系统优化:

1操作系统的优化 2mysql系统本身优化

mysql服务器上关闭iptables,selinux等防火墙软件

mysql优化:

linux下mysql配置文件位置 /etc/my.cnf 或者 /etc/mysql/my.cnf

windows下mysql配置文件位置 c:/ windows/my.ini文件

服务器硬件优化

mysql一些工作只能用到单核cpu的

选择单核频率更快的cpu

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442451.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

sql server查询历史进程_学习笔记 | SequoiaDB SQL查询语句执行过程

本篇笔记将为大家介绍 SequoiaDB 巨杉数据库查询 SQL 语句的执行过程&#xff0c;以及查询语句执行过程中实例层、协调节点、编码节点、数据节点各自承担的功能。应用程序或用户想要从数据库查询需要的数据&#xff0c;首先通过 API 或 client 端连接数据库&#xff0c;将查询 …

服务器主机linux安装mysql_linux服务器上安装mysql

mysql版本&#xff1a;mysql-5.6.44-linux-glibc2.12-x86_64.tarlinux操作系统和版本信息&#xff1a;1、检查linux服务器上是否已安全mysql[rootlocalhost ~]# rpm -qa|grep -i mysql未安装则无任何信息返回&#xff0c;若已安装则会返回已安装的版本信息&#xff0c;可通过--…

mysql中rownum分页_Oracle数据库中rownum分页

测试人员在项目测试中发现查询结果列表分页的时候&#xff0c;有的数据在好几页中重复显示&#xff0c;有的则一次都不显示&#xff0c;经过分析sql&#xff0c;原来问题出在测试人员在项目测试中发现查询结果列表分页的时候&#xff0c;有的数据在好几页中重复显示&#xff0c…

python买东西_Python实战之ATM+购物车

学python一个月以来的第一个工程级别项目!!!!!1.首先分析项目需求:模拟实现一个ATM 购物商城程序额度 15000或自定义---->注册功能实现购物商城&#xff0c;买东西加入 购物车&#xff0c;调用信用卡接口结账----->购物车,支付可以提现&#xff0c;手续费5%----->提现…

multi source replication mysql_MySQL 5.7多源复制(Multi-Source Replication)

MySQL5.7.6以后开始支持多源复制Multi-Source Replication,可以将多个主的库同步到一台slave上&#xff0c;从而增加从的利用率&#xff0c;出节省了机器&#xff0c;也可用于备份。首先设置master_info_repository和relay_log_info_repository两个参数&#xff0c;这存储同步信…

列模式 文本编辑器_UltraEdit 24.2 文本编辑器免费版

UltraEdit是由IDM官方最新出品的文本编辑器版本&#xff0c;它是一款性价比全球一流的文本、十六进制&#xff0c;HTML、PHP、Java 和 JavaScript程序文本编辑器&#xff0c;被认为是世界上最好的文本编辑器。UltraEdit可以满足您的所有需求&#xff0c;例如代码突出显示&#…

在linux中加固mysql_mysql在linux下的安装

安装环境&#xff1a;系统是 centos6.51、下载下载地址&#xff1a;http://dev.mysql.com/downloads/mysql/5.6.html#downloads下载版本&#xff1a;我这里选择的5.6.33&#xff0c;通用版&#xff0c;linux下64位也可以直接复制64位的下载地址&#xff0c;通过命令下载&#x…

mysql 加密 tde_tde加密 mysql 阿里云

本文介绍AliSQL和其他版本的功能对比。AliSQL介绍AliSQL是阿里云深度定制的独立MySQL分支&#xff0c;除了社区版的所有功能外&#xff0c;AliSQL提供了类似于MySQL企业版的诸多功能&#xff0c;如企业级备份恢复、线程池、并行查询等&#xff0c;并且AliSQL还提供兼容Oracle的…

mysql分区表达式_怎么定义 mysql hash分区使用的用 户定义的表达式

用户需要在 rule.xml 中定义 partitionLength[] 和 partitionCount[] 两个数组和 hashSlice 二元组。在 DBLE 的启动阶段&#xff0c;点乘两个数组得到模数&#xff0c;也是逻辑分片的数量并且根据两个数组的叉乘&#xff0c;得到各个逻辑分片到物理分片的映射表(物理分片数量由…

mysql 多条记录选择一套_2020-11-09-Mysql(练习题第一套)

遗留问题 select语句中的别名问题 group by 中的别名问题# sql-表 FACT_DAY_SC-字段 DEPT_ID varchar(20) 电厂TJSJ_DATE DATE 日期FSL number 日发电量create table FACT_DAY_SC(DEPT_ID varchar(20),TJSJ_DATE DATE,FSL LONG);insert into FACT_DAY_SC values (10001,2020-12…

wamp的mysql触发器教程_wamp里的mysql怎么做出这个

这个表怎么做这个是phpmyadmin&#xff0c;他是一个独立的程序&#xff0c;并不是wamp独有的&#xff0c;你也可以独立下载phpmyadmin来使用。首先&#xff0c;phpmyadmin你可以把他看作是一个php写的mysql管理工具。前端页面实际上就是HTML&#xff0c;和一般的网页没有什么区…

wx轮播图接口学习用json格式_零基础学小程序008----列表和轮播图的实现,小程序解析json数据...

点击下面网址进入系列教程上一节带领大家实现领简单的计算器&#xff0c;这节来带领大家学习小程序列表功能。本节知识点1&#xff0c;定义本地json文件2&#xff0c;本地文件引入3&#xff0c;小程序列表渲染实现4&#xff0c;解析本地json(为解析网络json做准备)学习之前先来…

云服务器怎么装mysql_云服务器(windows环境)安装mysql图文教程

1、首先进入的是安装引导界面2、然后进入的是类型选择界面&#xff0c;这里有3个类型&#xff1a;Typical(典型)、Complete(完全)、Custom(自定义)。这里建议选择“完全”(Complete)安装&#xff0c;这样可以自定义选择MySQL的安装目录&#xff0c;然后点“Next”下一步&#x…

oracle mysql分页查询_Oracle与MySQL的分页查询sql语句格式实例讲解

Oracle使用rownum进行分页&#xff1a;SELECT *FROM (SELECT a.*, ROWNUM rnFROM (SELECT * FROM table_name) aWHERE ROWNUM < pageIndex * pageSize)WHERE rn > (pageIndex - 1) * pageSize其中&#xff0c;pageIndex是页码&#xff0c;pageSize是每页的条数MySQLMySQL…

阿里mysql 二进制_Mysql binlog 之阿里canal

1、What is Canal&#xff1f;canal [kənl]&#xff0c;中文翻译为 水道/管道/沟渠/运河&#xff0c;主要用途是用于 MySQL 数据库增量日志数据的订阅、消费和解析&#xff0c;是阿里巴巴开发并开源的&#xff0c;采用Java语言开发&#xff1b;历史背景是早期阿里巴巴因为杭州…

java 基本类型 引用类型_Java中的基本类型和引用类型变量的区别

基本类型&#xff1a;基本类型自然不用说了&#xff0c;它的值就是一个数字&#xff0c;一个字符或一个布尔值。引用类型&#xff1a;是一个对象类型&#xff0c;值是什么呢&#xff1f;它的值是指向内存空间的引用&#xff0c;就是地址&#xff0c;所指向的内存中保存着变量所…

git 怎么提交忽略文件夹_git 设置忽略文件提交的几种方式

在使用git进行项目管理的时候,有时候一些安装包之类,或者自己本地项目使用的一些编译文件,在不需要提交到远程仓库时,可以通过以下几种方式设置忽略提交,包括文件夹和单个文件.之前自己项目里面采用了第二种方法进行了设置,但是时间久远竟然忘记了.....,导致我有一些文件始终无…

java获取行号_java – 如何获取一个方法的行号?

我想做同样的事情,经过一些研究,就解决了javassist.您将需要添加javassist(我使用版本3.15.0-GA).给定以下类确定“x”方法的位置.方法名称“x”是硬编码的,但是如果你和我在一样的船上,反射并不困难,所以我相信你可以得到一个方法名称列表,然后下面将让你得到行号的方法&#…

java测试类和类_【测试开发】从测试角度看Java异常类(错误和异常区别介绍)

在 Java 中&#xff0c;所有的异常都有一个共同的祖先 Throwable(可抛出)。Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性。Throwable 有两个重要的子类&#xff1a;Exception(异常)和 Error(错误)&#xff0c;二者都是 Java 异常处理的重要子类…

mysql 学生成绩等级_JSP+SSM+Mysql实现的学生成绩管理系统

项目简介本系统是基于JSPSSMMysql实现的学生成绩管理系统。主要实现的功能有教师管理、学生管理、课程管理、学生成绩管理。难度等级&#xff1a;中等技术栈编辑器Eclipse Version: 2020-03 (4.15.0)前端技术基础&#xff1a;htmlcssJavaScript框架&#xff1a;JQueryH-ui后端技…