逍遥一派 发表于 2015-1-16 14:07:10

我们是不是还必定应当利用存储历程(二)

用一个库#bak_database存放这些历史数据。传言1:存储历程要比SQL代码实行效力更高
SQL是一种言语,用来声明在数据库上想要实行的操纵(查询,更新或办理等)。数据库引擎失掉的均是文本,就像C#源代码要由编译器处置一样,SQL源码也要必需经由过程某种体例的编译,以便天生一系列的底层数据库操纵,这个输入就叫着实行企图。从观点角度思索,天生实行企图的历程能够看作是程序编译的历程。

所谓的存储历程要比一般SQL有功能提拔表现在对实行企图的重用上。换句话说,第一实行存储历程时,数据库将天生实行企图。然后实行代码。下一次实行的时分便可重用后面已天生的实行企图,因而效力上会有进步。一切的SQL命令都必要实行企图。

这个(毛病的)集会声明,数据库仅会重用存储历程的实行企图。不外在SQLServer和Oracle数据库(我们对别的产物也其实不非常的懂得)中,主要实行企图将会使用就任何SQL语句上。上面是SQLServer2005在线文档中的一段援用。

在SQLServer2005实行任何SQL语句时,干系引擎起首检察缓存,判别个中是不是有以后SQL的实行企图。SQLServer2005将重用任何可行的实行企图,以便减小从头编译SQL语句对功能上的影响。若没有找到现有的实行企图,SQLServer2005才会为以后查询天生新的实行企图。

因而,以后夸大存储历程要比复杂的SQL代码更高效的争辩就没有任何意义了。从功能角度思索,一切到达数据库的SQL代码城市被一律看待,编译以后,两者功能没有任何不同,这就是结论。

传言2:存储历程能够用来反对SQL注进打击
这个传言和后面有关功能的传言有些类似。存储历程固然能够下降SQL注进产生的大概性,由于存储历程利用强范例参数。因而关于打击者来讲,很难在必要数字的中央传进字符串,反之亦然。

参数化查询也供应了一样的功效,比方,ADO.NET就对创立参数化查询供应了很好的撑持,且ADO.NET被普遍使用于.NET平台上的良多数据库中,包含EntityFrameword,NHibernate和别的O/RM中。利用参数机关的SQL语句也能够和存储历程一样反对SQL注进打击。

(本文摘自:Microsoft.NET企业级使用架构计划)mysql的prepare其实是本地PHP客户端模拟的,并没有根据你mysql的设置做字符集的调整。应该交与mysqlserver端做prepare,同时得调用mysql_set_character_set去操作,server才会按照字符集去做转义。

莫相离 发表于 2015-1-18 12:00:06

SP4包括用于以下SQLServer2000组件的程序包:Database组件(下载文件:SQL2000-KB884525-SP4-x86.EXE)更新SQLServer2000的32位Database组件,包括数据库引擎、复制、客户端连接组件及工具。有关其他信息,请参阅ReadmeSql2k32Sp4.htm。AnalysisServices组件(下载文件:SQL2000.AS-KB884525-SP4-x86.EXE)更新SQLServer2000的32位AnalysisServices。

飘飘悠悠 发表于 2015-1-26 14:49:44

是要和操作系统进行Socket通讯的场景。否则建议慎重!

第二个灵魂 发表于 2015-2-4 20:24:18

分区表是个亮点!从分区表也能看出微软要做大作强SQLServer的信心。资料很多,这里不详细说。但是重点了解的是:现在的SQLServer2005的表,都是默认为分区表的。因为它要支持滑动窗口的这个特性。这种特性对历史数据和实时数据的处理是很有帮助的。

若相依 发表于 2015-2-10 07:01:33

大侠们有推荐的书籍和学习方法写下吧。

透明 发表于 2015-3-1 03:35:19

一个百万级别的基本信息表A,一个百万级别的详细记录表B,A中有个身份证id,B中也有身份id;先要找出A中在B的详细记录。

再现理想 发表于 2015-3-10 12:46:41

多走走一此相关论坛,多看一些实例开发,多交流0经验,没什么的,我也是刚学没多久!加油

山那边是海 发表于 2015-3-17 07:14:34

所以你总能得到相应的升级版本,来满足你的需求。

变相怪杰 发表于 2015-3-24 02:54:13

不好!如果出了错;不好调试;不好处理!其实web开发将代码分为3层:web层;业务逻辑层和数据访问层;一般对数据库的操作都在数据访问层来做;这样便于调试和维护!而且将来如果是换了数据库的话;你只需要改数据层的代码;其他层的基本可以不变!要是你在jsp中直接调用sql数据库;那么如果换了数据库呢?岂不都要改?如果报了异常呢?怎么做异常处理?
页: [1]
查看完整版本: 我们是不是还必定应当利用存储历程(二)