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查漏补缺的更多相关文章

  1. Mysql查漏补缺笔记

    目录 查漏补缺笔记2019/05/19 文件格式后缀 丢失修改,脏读,不可重复读 超键,候选键,主键 构S(Stmcture)/完整性I(Integrity)/数据操纵M(Malippulation) ...

  2. 《CSS权威指南》基础复习+查漏补缺

    前几天被朋友问到几个CSS问题,讲道理么,接触CSS是从大一开始的,也算有3年半了,总是觉得自己对css算是熟悉的了.然而还是被几个问题弄的"一脸懵逼"... 然后又是刚入职新公司 ...

  3. js基础查漏补缺(更新)

    js基础查漏补缺: 1. NaN != NaN: 复制数组可以用slice: 数组的sort.reverse等方法都会改变自身: Map是一组键值对的结构,Set是key的集合: Array.Map. ...

  4. Entity Framework 查漏补缺 (一)

    明确EF建立的数据库和对象之间的关系 EF也是一种ORM技术框架, 将对象模型和关系型数据库的数据结构对应起来,开发人员不在利用sql去操作数据相关结构和数据.以下是EF建立的数据库和对象之间关系 关 ...

  5. 2019Java查漏补缺(一)

    看到一个总结的知识: 感觉很全面的知识梳理,自己在github上总结了计算机网络笔记就很累了,猜想思维导图的方式一定花费了作者很大的精力,特共享出来.原文:java基础思维导图 自己学习的查漏补缺如下 ...

  6. 20165223 week1测试查漏补缺

    week1查漏补缺 经过第一周的学习后,在蓝墨云班课上做了一套31道题的小测试,下面是对测试题中遇到的错误的分析和总结: 一.背记题 不属于Java后继技术的是? Ptyhon Java后继技术有? ...

  7. 今天開始慢下脚步,開始ios技术知识的查漏补缺。

    从2014.6.30 開始工作算起. 如今已经是第416天了.不止不觉.时间过的真快. 通过对之前工作的总结.发现,你的知识面.会决定你面对问题时的态度.过程和结果. 简单来讲.知识面拓展了,你才干有 ...

  8. 【spring源码分析】IOC容器初始化——查漏补缺(四)

    前言:在前几篇查漏补缺中,其实我们已经涉及到bean生命周期了,本篇内容进行详细分析. 首先看bean实例化过程: 分析: bean实例化开始后 注入对象属性后(前面IOC初始化十几篇文章). 检查激 ...

  9. Django 查漏补缺

    Django 查漏补缺 Django  内容回顾: 一. Http 请求本质: 网络传输,运用socket Django程序: socket 服务端 a. 服务端监听IP和端口 b. 浏览器发送请求 ...

随机推荐

  1. 将某个Qt4项目升级到Qt5遇到的问题

    本文转载自http://hi.baidu.com/xchinux/item/9044d8ce986accbb0d0a7b87 一.将某个QT4项目改成QT5遇到的问题 该Qt4项目以前是使用Qt4.7 ...

  2. MySQL 到底是怎么解决幻读的?

    ; 原理:将历史数据存一份快照,所以其他事务增加与删除数据,对于当前事务来说是不可见的. 2. next-key 锁 (当前读) next-key 锁包含两部分: 记录锁(行锁) 间隙锁 记录锁是加在 ...

  3. hdu6350 /// tarjan+并查集+组合+最大流思想

    题目大意: 给定n个点 m条边没有重边的仙人掌图(没有一条边会同时存在与两个环 也就是环都是相互独立的) 求任意两点间 i^j^maxflow(i,j)的总和 maxflow为两点间最大流 题解:ht ...

  4. thinkphp5.1、thinkphp6

    下载原装:https://packagist.org/packages/topthink/think composer create-project topthink/think tp 6.0.*-d ...

  5. redis主从复制和哨兵

    摘自:https://www.cnblogs.com/leeSmall/p/8398401.html 一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点 ...

  6. (PASS)什么是原子性和原子性操作?

    什么是原子性操作呢? 下面我举一个例子来说明一下: A想要从自己的帐户中转1000块钱到B的帐户里.那么从A开始转帐,到转帐结束的这一个过程,称之为一个事务.在这个事务里,要做如下操作: 1. 从A的 ...

  7. 前端mockjs模拟图片验证码

    ps:mockjs在进行相同的双数次请求的时候,会出现请求404的状况,希望有大佬帮解决下 首先创建dom <img id='bbn' src="" alt="图图 ...

  8. js怎样判断一个数是质数

    1.首先了解什么是质数(即:只能被1和它本身整除的数叫质数)主要代码 /** *判断该数是否为素数 */ function isPrimeNum(num){ ; i < num/+; i++) ...

  9. Shell while循环详解

    while 循环是 Shell 脚本中最简单的一种循环,当条件满足时,while 重复地执行一组语句,当条件不满足时,就退出 while 循环. Shell while 循环的用法如下: while  ...

  10. shell 脚本定制与重定向

    脚本定制 . 或者 source: 读取文本文件并执行(在当前shell解释并执行) source ./ld 总用量 8 -rw-------. 1 root root 1223 10月 2 21:1 ...