仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1080|回复: 8
打印 上一主题 下一主题

[学习教程] 利用存储历程优化Sql实行速率

[复制链接]
小魔女 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:18:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
MySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQLAB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。记得刚入手下手进修Sql的时分,只晓得存储历程可以进步查询速率,却不晓得存储历程为何可以进步查询速率,觉得能写出为所欲为的存储历程真是太了不得了。转眼就过了好几年了,如今又想转头来收拾一下存储历程的长处。

我们在利用Transact-SQLt时,一样平常能够用以下两种办法来存储与实行Sql命令。

1,将Sql写在程序中,程序实行时向SqlServer发送sql语句及实行命令。
2,将Sql存在SqlServer中,创立实行存储历程来处置庞大了局.

实在,我们能够将任何一组sql语句都作为存储历程存起来,只是在实践项目中,这类办法太甚于机器。

上面我们切进正题:
存储历程的基础观点。
存储历程是Transact-SQL语句的预编译汇合,如许语句在一个称号下存储并作为一个编译事后的单位处置。正由于是预编译过的,以是在实行的时分就省往了编译的工夫。

在利用存储历程有以下几点上风:
1,同意模块化程序计划:
一个功效只必要创立一次,就能够被恣意次挪用,到达重用的目点,并且能够自力于程序修正(固然,这点有益也有弊,利固然是修正起来复杂,省往程序编译公布等历程,弊固然就是平安性成绩了,由于存储历程都是明文,也就是都表露在用户的眼下,简单被修正。)

2,可以进步实行速率:
后面有讲到,数据库引擎在创立存储历程的时分就会对其举行剖析和优化,并预编译好,并且能够在初次实行该历程后利用该历程在内存中的版本,如许就省往了不IO的工夫。而假如是运程程序中的Transact-Sql,它都是从客户端发送,而且每次都要编译和优化。

3,削减收集流量
将数百行的Sql代码放到一个单位中,在实行时,只必要发送一个实行单位称号的命令,而不必要发送数百行的代码,这在收集情况中,也能够省下很多工夫。

以上只是自己对存储历程的一些意见,固然在详细的利用过程当中,存储历程的感化远远不及这些,这都必要到详细的项目中往体味了。php本地模拟的prepare底层就是mysql_real_escape_string,所以必须得用mysql_set_character_set去设置mysql->charset,否则就存在字符集问题。
再见西城 该用户已被删除
沙发
发表于 2015-1-18 12:43:25 | 只看该作者
这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。
金色的骷髅 该用户已被删除
板凳
发表于 2015-1-25 21:47:12 | 只看该作者
我们学到了什么?思考问题的时候从表的角度来思考问
活着的死人 该用户已被删除
地板
发表于 2015-2-4 07:53:06 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
精灵巫婆 该用户已被删除
5#
发表于 2015-2-9 19:13:48 | 只看该作者
不过话说回来了,绝大多数的性能优化准则与对sqlserver存储的结构理解息息相关
再现理想 该用户已被删除
6#
发表于 2015-2-27 18:45:20 | 只看该作者
其中最有名的应该是row_number了。这个终于解决了用临时表生成序列号的历史,而且SQLServer2005的row_number比Oracle的更先进。因为它把Orderby集成到了一起,不用像Oracle那样还要用子查询进行封装。
第二个灵魂 该用户已被删除
7#
发表于 2015-3-9 12:40:00 | 只看该作者
如果,某一版本可以提供强大的并发响应,但是没有Oracle的相应版本稳定,或者价格较贵,那么,它就是不适合的。
飘灵儿 该用户已被删除
8#
发表于 2015-3-16 23:55:13 | 只看该作者
对于微软系列的东西除了一遍遍尝试还真没有太好的办法
小女巫 该用户已被删除
9#
发表于 2015-3-23 08:19:30 | 只看该作者
SP4是一个累积性的ServicePack,包含自以前的ServicePack发布以来所有的修补程序(包括MS03-031安全公告)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 04:41

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表