Mysql查漏补缺
Mysql查漏补缺
存储引擎
数据库使用存储引擎来进行CRUD的操作,不同的存储引擎提供了不同的功能。Mysql支持的存储引擎有InnoDB、MyISAM、Memory、Merge、Archive、Federated、CSV、BLACKHOLE等,默认使用InnoDB作为存储引擎。
存储引擎列表
功能 | MylSAM | MEMORY | InnoDB | Archive |
---|---|---|---|---|
存储限制 | 256TB | RAM | 64TB | None |
支持事务 | No | No | Yes | No |
支持全文索引 | Yes | No | No | No |
支持树索引 | Yes | Yes | Yes | No |
支持哈希索引 | No | Yes | No | No |
支持数据缓存 | No | N/A | Yes | No |
支持外键 | No | No | Yes | No |
其中MEMORY,由于存储是在内存,可以把一些临时数据存放进使用这种存储引擎的Mysql中,当然在目前也有类似功能的项目出现,如Redis,Memcache。
索引
索引就是表的目录,相当于书的目录,可以更快的查找到想要的记录。而索引本身,会单独保存在一个文件中。
优化索引
1、数据类型越小越好:数据类型越小,占用的空间更小,处理速度就会变快。
2、数据类型越简单越好:比如整型,相比于字符型,比较起来的复杂度更低。
3、避免NULL:有NULL值的列很难进行查询优化。
不适合索引的场景
1、查询中很少用到的列。比如student表中的性别列。如果使用索引,反而会增加系统的负担。
2、很少有数据值的列。同上。
3、数据类型是text或bit等数据类型占用空间很大或很小的列。
4、不出现在where条件中的字段。
适合索引的场景
1、表的主键和外键。
2、需要和其他表进行连接的。
3、排序的列。
4、范围搜索的列。
索引的优缺点
优点
1、能够提高对表的查询速度。
缺点
1、创建和维护索引麻烦。
2、虽然会提高查询速度,但是会减慢写入速度。因为在insert或update时可能需要重建索引。
索引分类
1、普通索引
create index index_name on table_name(field_name)
2、唯一索引
表示列值唯一,可以有NULL值。
create unique index index_name on table_name(field_name)
3、复合索引
将几个列作为索引来检索。比如建立了(a,b,c)三个列的组合索引,那么查询的时候,支持a|ab|abc来查找,如果使用bc查找,那么则没有使用复合索引。
注意:如果列中有NULL值,将不会包含在索引中,该复合索引则无效。
create index index_name on table_name(field_name,field_name...)
4、主键索引
列值唯一,不能有NULL值,一张表只能有一个主键索引。
alter table table_name add primary key table_name(field_name)
存储过程
存储过程是为了执行一个SQL指令集合,经过编译存在于数据库中。用户可以根据存储过程的名字并给定参数来进行调用。并且存储过程支持返回多个值。
创建
create procedure procedure_name([in/out/inout] 参数名 参数类型...)
begin
sql语句;
end
由于sql语句中会使用;作为结束符,所以要使用delimiter来重新定义结束符。
删除
drop procedure procedure_name;
高级用法
if条件
if 判断语句 then
sql;
end if;
if 判断语句 then
sql;
else
sql;
end if;
case
case 变量名
when 值 then
sql;
when 值 then
sql;
...
else
sql;
end case;
while...do(先判断后执行)
while 判断语句 do
sql;
end while;
repeat(先运行后判断)
repeat
sql;
until 判断语句
end repeat;
Mysql查漏补缺的更多相关文章
- Mysql查漏补缺笔记
目录 查漏补缺笔记2019/05/19 文件格式后缀 丢失修改,脏读,不可重复读 超键,候选键,主键 构S(Stmcture)/完整性I(Integrity)/数据操纵M(Malippulation) ...
- 《CSS权威指南》基础复习+查漏补缺
前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...
- js基础查漏补缺(更新)
js基础查漏补缺: 1. NaN != NaN: 复制数组可以用slice: 数组的sort.reverse等方法都会改变自身: Map是一组键值对的结构,Set是key的集合: Array.Map. ...
- Entity Framework 查漏补缺 (一)
明确EF建立的数据库和对象之间的关系 EF也是一种ORM技术框架, 将对象模型和关系型数据库的数据结构对应起来,开发人员不在利用sql去操作数据相关结构和数据.以下是EF建立的数据库和对象之间关系 关 ...
- 2019Java查漏补缺(一)
看到一个总结的知识: 感觉很全面的知识梳理,自己在github上总结了计算机网络笔记就很累了,猜想思维导图的方式一定花费了作者很大的精力,特共享出来.原文:java基础思维导图 自己学习的查漏补缺如下 ...
- 20165223 week1测试查漏补缺
week1查漏补缺 经过第一周的学习后,在蓝墨云班课上做了一套31道题的小测试,下面是对测试题中遇到的错误的分析和总结: 一.背记题 不属于Java后继技术的是? Ptyhon Java后继技术有? ...
- 今天開始慢下脚步,開始ios技术知识的查漏补缺。
从2014.6.30 開始工作算起. 如今已经是第416天了.不止不觉.时间过的真快. 通过对之前工作的总结.发现,你的知识面.会决定你面对问题时的态度.过程和结果. 简单来讲.知识面拓展了,你才干有 ...
- 【spring源码分析】IOC容器初始化——查漏补缺(四)
前言:在前几篇查漏补缺中,其实我们已经涉及到bean生命周期了,本篇内容进行详细分析. 首先看bean实例化过程: 分析: bean实例化开始后 注入对象属性后(前面IOC初始化十几篇文章). 检查激 ...
- Django 查漏补缺
Django 查漏补缺 Django 内容回顾: 一. Http 请求本质: 网络传输,运用socket Django程序: socket 服务端 a. 服务端监听IP和端口 b. 浏览器发送请求 ...
随机推荐
- Spring Boot主要目标
Spring Boot主要目标 Spring Boot的主要目标是: 为所有Spring开发提供一个基本的,更快,更广泛的入门体验. 开箱即用,但随着需求开始偏离默认值,快速启动. 提供大型项目(例如 ...
- 记一次批量修改SQLServer表数据
前提: 1.数据有上百万条,分成10几张excel表,从数据库中导出,由业务部门修改: 2.数据没什么规律: 3.和数据库DB商量后决定先把从excel导进数据库中,再通过关联查询修改数据 将 Exc ...
- export 与 export default
export 和 import 都属于 ES6 的内容. node 的 module 遵循的是 CommonJS规范,requirejs遵循AMD,seajs遵循CMD,虽各有不同, 但总之还是希望保 ...
- 9-MySQL-Ubuntu-数据表中数据的修改(二)
数据的修改(update) (1)修改整个字段: update 表名 set 字段1=值1,字段2=值2; (2)修改字段部分数据 update 表名 set 字段1=值1,字段2=值2,... wh ...
- OpenResty实现限流的几种方式
在开发 api 网关的时,做过一些简单的限流,比如说静态拦截和动态拦截:静态拦截说白了就是限流某一个接口在一定时间窗口的请求数.用户可以在系统上给他们的接口配置一个每秒最大调用量,如果超过这个限制 ...
- forEach方法
*forEach() * -这个方法只支持ie8以上的浏览器 * -forEach方法需要一个函数作为参数 * -像这种函数,由我们创建但是不由我们调用,我们称为回调函数 * 数组中由几个元素函数就会 ...
- linux 档案 指令(鸟哥私房菜)
[ls -al] [ls -l --full-time] 显示文件完整的日期格式 [ls] 显示非隐藏档的文件信息 [ls -al] 显示所有文档信心.文档前面的 “”.“”表明该文档是隐藏档.eg. ...
- lsm和lkm模块
使用LSM Hook框架进行内核安全审计.元数据捕获,安全人员只需要按照既定的调用规范编写LKM模块,并加载进Linux内核,而不需要对system call lookup表进行任何修改 https: ...
- jq-demo-阻止冒泡,阻止默认行为
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- join加入线程
join线程会抢先拿到cup来执行线程,然后其他的线程再来执行. 案例: public static void main(String args[]){ //创建线程对象 Thread myThrea ...