python全栈开发day58-mysql存储过程,权限,索引,慢日志,执行计划,分页优化处理
1.存储过程
delimiter //
create procedure insert_data(in rows int)
begin
DECLARE n INT DEFAULT 1;
drop table if exists row300w;
create table row300w(id int,name varchar(30));
while n < rows do
insert into row300w(id,name) values(n,concat('alex',rows));
set n = n + 1;
end while;
end//
delimiter ;
1) 模板
create procedure 存储过程名(
in 变量表名 数据类型,
out @变量名, # 另一种定义变量方式
inout @变量名)
begin
。。。。。
end
2) 执行存储过程
call 存储过程名(参数,。。。)
3) 定义变量
declare 变量 数据类型
4) pycharm中调用存储过程
cursor.callproc('存储过程名',(参数。。。))
5) 常见流程控制语句
循环语句:
while 条件 do 。。。 end while;
repeat 。。。until 条件 end repeat;
标志:loop 。。。 if 条件 then
leave 标志;
end if;
end loop;
https://www.cnblogs.com/ClassNotFoundException/p/6369843.html
CASE语句:可以用到查询,更新等语法中
https://www.jianshu.com/p/5112428a13b3
(1)select case 变量 // 或case(变量)
when 值 then 。。。
when 值 then 。。。
。。。。。
else 。。。
end 字段名
if (条件,条件真时结果,条件假时结果):
ifnull(a,b) a不为null 返回a,否则返回b
nullif(a,b) 如果a==b 返回null 否则a
2.权限
1) 创建用户,修改用户名和密码,删除用户
create user ‘xxx’@‘192.168.1.%’ identified by ‘123’;
create user ‘xxx’@‘%’ identified by ‘123’;
rename user ‘用户名’@‘ip地址’ to ‘新用户名’@‘ip地址’
set password for ‘用户名’@‘ip地址’=password(‘新密码’);
2) 授权,撤销授权
grant all privileges on *.* to '用户名'@‘ip地址’
show grants for '用户'@'IP地址'
revoke all on *.* from '用户'@'IP地址'
取消来自远程服务器的mjj用户所有数据库的所有的表的权限
revoke all privileges on *.* from 'mjj'@'%';
3.mysql 备份
mysqldump -uroot -p 数据库名 > 导出文件路径
mysqldump -uroot -p -d 数据库名 > 导出文件路径
mysqdump -u root -d db10 < db1.sql -p # 导入文件至数据库
4.索引
写在前面:
无索引: 从前往后一条一条查询
有索引:创建索引的本质,就是创建额外的文件(某种格式存储,查询的时候,先去格外的文件找,定好位置,然后再去原始表中直接查询。但是创建索引越多,会对硬盘也是有损耗。 建立索引的目的:
a.额外的文件保存特殊的数据结构
b.查询快,但是插入更新删除依然慢
c.创建索引之后,必须命中索引才能有效
单例索引:
普通索引:仅有一个加速查找的作用
create index 索引名 on 表名(列名);
create table xxx(
.....
index 索引名(列名));
drop index 索引名 on 表名;
show index 索引名 from 表名;
唯一索引:加速查找+唯一约束(可含null)
创建 create unique index 索引名 on 表名(列名);
drop index 索引名 on 表名;
主键索引:加速查找+唯一约束(不含null)
alter table 表名 add primary key(列名);
alter table 表名 drop primary key;
alter table 表名 modify 列名 int ,drop primary key;
组合索引
普通组合索引,和索引合并的区别
create index 索引名 on 表名(列名1,列名2);
空间索引
索引覆盖和索引合并
正确使用索引:
创建索引、命中索引、正确使用索引
尽量避免使用like、函数、or、类型不一致、!=、>、<、order by
组合索引最左前缀:
5.慢日志
(1) 进入MySql 查询是否开了慢查询
show variables like 'slow_query%';
参数解释:
slow_query_log 慢查询开启状态 OFF 未开启 ON 为开启
slow_query_log_file 慢查询日志存放的位置(这个目录需要MySQL的运行帐号的可写权限,一般设置为MySQL的数据存放目录)
(2)查看慢查询超时时间
show variables like 'long%';
ong_query_time 查询超过多少秒才记录 默认10秒
(3)开启慢日志(1)(是否开启慢查询日志,1表示开启,0表示关闭。)
set global slow_query_log=1;
(4)再次查看
show variables like '%slow_query_log%';
(5)开启慢日志(2):(推荐)
在my.cnf 文件中
找到[mysqld]下面添加:
slow_query_log =1
slow_query_log_file=C:\mysql-5.6.40-winx64\data\localhost-slow.log
long_query_time = 1
参数说明:
slow_query_log 慢查询开启状态 1 为开启
slow_query_log_file 慢查询日志存放的位置
long_query_time 查询超过多少秒才记录 默认10秒 修改为1秒
6.执行计划
explain + 查询sql-用于显示SQL执行信息参数,根据参考信息可以进行sql优化;
主要的type参数:查询的访问方式,性能:
all < index < range < index_merge < ref_or_null <ref < eq_ref <system/const
all: 全表扫描 ,有limit则找到不在扫描
index: 全索引扫描,对索引从头到尾找一遍
range: 对索引列进行范围查找
index_merge: 合并索引,使用多个单例索引搜索
ref: 根据索引找到一个值或多个值
eq_ref: 连接时使用primarykey 或unique类型
const: 常量
system:系统 表仅有一行。
。。。。。。。。。。。。
7.分页优化查询
python全栈开发day58-mysql存储过程,权限,索引,慢日志,执行计划,分页优化处理的更多相关文章
- Python全栈开发:Mysql(二)
视图 视图是一个虚拟表(非真实存在),其本质是[根据SQL语句获取动态的数据集,并为其命名],用户使用时只需使用[名称]即可获取结果集,并可以将其当作表来使用. SELECT *FROM (SELEC ...
- Python全栈开发:Mysql(一)
一.概述 1.什么是数据库 ? 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库 2.什么是 MySQL.Oracle.SQLite.Access.MS SQL Serve ...
- Python全栈开发之---mysql数据库
1.数据库的安装和连接 #数据库安装 pip install PyMySQL #数据库操作 import pymysql db = pymysql.connect("数据库ip", ...
- 巨蟒python全栈开发数据库攻略6:索引2&重要内容汇总
1.索引的添加和删除 2.正确命中索引举例,explain优化神奇的简单使用 3.联合索引 4.简述慢日志记录 5.用户创建和权限分配 6.mysqldump逻辑备份,浅谈主从复制和读写分离 7.浅谈 ...
- Win10构建Python全栈开发环境With WSL
目录 Win10构建Python全栈开发环境With WSL 启动WSL 总结 对<Dev on Windows with WSL>的补充 Win10构建Python全栈开发环境With ...
- python全栈开发中级班全程笔记(第二模块、第四章)(常用模块导入)
python全栈开发笔记第二模块 第四章 :常用模块(第二部分) 一.os 模块的 详解 1.os.getcwd() :得到当前工作目录,即当前python解释器所在目录路径 impor ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- python全栈开发目录
python全栈开发目录 Linux系列 python基础 前端~HTML~CSS~JavaScript~JQuery~Vue web框架们~Django~Flask~Tornado 数据库们~MyS ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
随机推荐
- ORACLE IMPDP导入报表数据已存在
背景 搞了这么多年oracle,不论是开发和运维,自认为是都了解了,和dba差的只是熟练的问题,因为毕竟不是天天搞它.不过突然听说数据泵导入的功能,大吃一惊,好像有印象,以为是落后的,一查,竟然是先进 ...
- <TCP/IP>链路层小结
图片和部分内容转载自Chang Zhao 这章大致介绍了以太网,以太网帧的格式,网桥和交换机,无线局域网(Wi-Fi),点到点协议,MTU(最大传输单元)的知识点,所谓链路,在此可以解释为 IP数 ...
- Centos7环境下etcd集群的搭建
Centos7环境下etcd集群的搭建 一.简介 "A highly-available key value store for shared configuration and servi ...
- linux无法启动httpd服务问题
httpd 服务启动报错,可能出现的问题比较多,通过查看日志看是什么报错 (tail 200f /etc/httpd/logs/error_log) 1.查看防火墙是不是关闭状态 2.查看80端口是 ...
- C和C++相互调用
在项目中融合C和C++有时是不可避免的,在调用对方的功能函数的时候,或许会出现这样那样的问题.近来在主程序是C语言,而调用C++功能函数的时候,C++的*.h头文件都能找到,功能函数也都定义了,最重要 ...
- Ex 7_17 考虑如下的网络(其中数字为对应边的容量)...第十三次作业
(a) 利用ford-fulkerson算法即可求出最大流和最小分割. (b) 剩余网络为 由S可达的顶点为A.B.可达T的顶点为C. (c) 瓶颈边有e(A,C),e(B,C). (d) 下图中不包 ...
- 基于官方mysql镜像构建自己的mysql镜像
参考文章:https://www.jb51.net/article/115422.htm搭建步骤 1.首先创建Dckerfile: 1 2 3 4 5 6 7 8 9 10 11 12 FROM my ...
- tomcat占用cpu比较多
在Linux中当Tomcat启动后,我们只是去查看应用是否能够正常访问来判断Tomcat启动是否正常.一般情况下这样看是没有问题的,但是有时候我们会发现当Tomcat使用了一段时间后,开始出现CPU或 ...
- Oracle存储过程中跳出循环的写法
注:本文来源于: < Oracle存储过程中跳出循环的写法 > Oracle存储过程中跳出循环的写法 记录exit和return的用法 1:exit用来跳出循环 loop IF V_ ...
- Eclipse+maven+scala+spark环境搭建
准备条件 我用的Eclipse版本 Eclipse Java EE IDE for Web Developers. Version: Luna Release (4.4.0) 我用的是Eclipse ...