数据库篇(二)——什么是存储过程?有哪些优缺点?
存储过程
就是一些编译好了的SQL语句,这些SQL语句代码像一个方法一样实现一些功能(对单表或多表的增删改查),然后给这些代码块取一个名字,在用到这个功能的时候调用即可。
存储过程详解参考:
http://www.cnblogs.com/knowledgesea/archive/2013/01/02/2841588.html
优点:
- 存储过程是一个预编译的代码块,执行效率比较高
- 存储过程在服务器端运行,减少客户端的压力
- 允许模块化程序设计,只需要创建一次过程,以后在程序中就可以调用该过程任意次,类似方法的复用
- 一个存储过程替代大量T_SQL语句 ,可以降低网络通信量,提高通信速率
- 可以一定程度上确保数据安全
缺点:
- 调试麻烦(没有像开发程序那样容易)
- 可移植性不灵活(因为存储过程依赖于具体的数据库)
MySQL中的存储引擎
有两个常用存储引擎:MyISAM与InnoDB(MySQL默认的)
MyISAM与InnoDB的区别:
1、事务处理方面:
MyISAM强调性能,查询速度比InnoDB快,但不提供事务支持;
InnoDB提供事务支持。
2、外键:
MyISAM不支持外键;InnoDB支持外键。
3、锁:
MyISAM只支持表级锁;InnoDB支持表级锁与行级锁,默认是行级锁。
因此InnoDB适合插入和更新比较多的情况,MyISAM适合频繁查询的情况。
4、全文索引:
MyISAM支持全文索引,InnoDB不支持全文索引(从MySQL5.6版本开始提供对全文索引的支持)
5、表主键:
MyISAM:允许没有主键的表存在
InnoDB:如果没有设定主键,就会自动生成一个6字节的主键(用户不可见)
6、表的具体行数:
MyISAM:select count(*) from table,MyISAM只需要读出保存好的行数,因为MyISAM内置了一个计数器。
InnoDB:不保存具体的行数,执行select count(*) from table时,是扫描一遍整个表来计算有多少行。
问题:如果一个表中有自增主键ID,当insert17条记录后,删除第15,16,17条记录,再重启MySQL,再insert一条记录,这条记录的ID是18还是15?
答:如果是MyISAM,ID是18.因为MyISAM会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。
若果是InnoDB,ID是15.因为InnoDB只会把自增主键的最大ID记录到内存中,重启数据库会导致最大ID丢失。
数据库篇(二)——什么是存储过程?有哪些优缺点?相关推荐
- Python学习日记(三十四) Mysql数据库篇 二
外键(Foreign Key) 如果今天有一张表上面有很多职务的信息 我们可以通过使用外键的方式去将两张表产生关联 这样的好处能够节省空间,比方说你今天的职务名称很长,在一张表中就要重复的去写这个职务 ...
- SQL2K数据库开发二十六之存储过程操作创建存储过程(一)
1.可以使用Transact-SQL中的CREATE PROCEDURE语句创建存储过程,使用该语句的语法为: 2.在查询分析器中执行如下语句创建一个存储过程. 3.在企业管理器中创建存储过程的方法为 ...
- c#操作数据库(二)dataAdapter篇
c#操作数据库(二)dataAdapter篇 2009-04-01 21:29 受够了ctrl+c加ctrl+v,忍无可忍之第二篇. 上篇博客介绍了用datareader操作数据库,dataReade ...
- [Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动
[Qt教程] 第22篇 数据库(二)编译MySQL数据库驱动 楼主 发表于 2013-5-13 21:28:02 | 查看: 1616| 回复: 12 编译MyQSL数据库驱动 版权声明 该文章原创 ...
- Java数据库篇8——索引、视图、存储过程、触发器
Java数据库篇8--索引.视图.存储过程.触发器 1.索引 1.1.索引是什么 在数据库表中,对字段建立索引可以大大提高查询速度.通过善用这些索引,可以令MySQL的查询和 运行更加高效 如果合理的 ...
- MySql基础篇---004 其它数据库对象篇:视图,存储过程与函数,变量、流程控制与游标 ,触发器
第14章_视图 讲师:尚硅谷-宋红康(江湖人称:康师傅) 官网:http://www.atguigu.com 1. 常见的数据库对象 对象 描述 表(TABLE) 表是存储数据的逻辑单元,以行和列的形 ...
- alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组)
alin的学习之路(数据库篇:二)(select查询,where条件查询,order by排序,单行函数,多行函数,group by分组) 1. SQL语句 1.1 sql语言类型 sql是一门独立的 ...
- 常见面试题整理--数据库篇(每位开发者必备
常见面试题整理--数据库篇(每位开发者必备) 转载自:https://zhuanlan.zhihu.com/p/23713529 知乎专栏 继续前面有关于的Python面试的两篇内容:P ...
- 【再回首:数据库篇】Oracle 开发雷区
[再回首:数据库篇]Oracle 开发雷区 前言 存储过程.函数及触发器的使用 综述 Oracle开发雷区 一.适用范围 二.版本合规 三.安全合规 四.数据字典合规 五.表设计合规 六.索引设计合规 ...
- 最近整理的一些常见的面试题,面试大全,黑马程序员面试宝典题库---数据库--篇
一. Mysql 1. SQL 的 select 语句完整的执行顺序 SQL Select 语句完整的执行顺序: 1. from 子句组装来自不同数据源的数据: 2. where 子句基于指定的条件对 ...
最新文章
- 根据坐标如何标记图片_如何玩转FloodFill算法?
- 如何识别能把桥压塌的大车?快看!能救命!
- 服务器文件储存,文件储存服务器
- UI控件库分享:DWZ(j-UI)、LigerUI、Linb
- 阿里巴巴右侧6滑块VS雅虎右侧6滑块VS自定义6滑块
- sydney airport hotel recommendations
- python属于哪类型的编程语言_Python是什么类型的编程语言,有什么特性
- 阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第4节 方法引用_4_方法引用_通过super引用父类的...
- ScrollDown的基本操作
- 视频APP软件开发功能架构
- 7.8 Cound 练习
- elasticsearch报错:bootstrap checks failed. You must address the points described in the following [1]
- b标签、Strong标签、h1标签的区别以及使用
- Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
- 禅宗公案节选(中国禅宗概述)
- VB虚拟机中ubuntu Linux系统安装使用MCNP5
- jeecgboot初学习疑问与总结--2021-05-11
- ISP Tuning—高通Chromatix6
- matlab打开eps文件_如何在Windows上打开EPS图像文件
- ec20 以太网_车载以太网基础知识解析