易截截图软件、单文件、免安装、纯绿色、仅160KB

从算法入手讲解SQL Server的典型示例

 Server数据库中实现最优最简的整个过程。
算法是计算机科学中一个重要的研究方向,是解决复杂问题的关键。在计算机世界中,算法无处不在。数据库是存储数据和执行大批量计算的场所,在数据库中使用一些简单的SQL命令,进行存储、查询、统计、以解决现实世界中的问题已经是屡见不鲜。随着数据量的大幅度增加和业务规则的日益复杂,越来越需要一种专门的方法来满足效率和准确性方面的要求。如何把解决问题的复杂算法转换为数据库能够执行的命令,也是数据库应用技术研究的一个方面。本文以MSSQL中的命令来阐述例子。
数据库中可以存储实体的数据集合,在进行运算时,数据库使用批量计算的方法来处理数据,批量的从存储设备上读取数据,处理之后又批量的写回存储设备。有的数据库提供了游标,游标可以读取出表中一行的数据中的每一个字段,对这些字段进行复杂的业务规则计算,然后再写回数据库中。与使用批量的方法比较,批量计算的方法消耗的资源相对比较少,而使用游标则占用太多的资源,速度比较慢,效率较低并且还有加锁条件等许多的限制。
比如对于数据库中存储了学生成绩student_Score(sno,cno,score,level),成绩从0分到100分不等,如果需要在分数的后面存储一个字段字level来说明成绩的优劣,90分以上的A,80-90分为B,60-80分的为C,60分以下的为D,以下有几种算法都可以达到同样的目标:
1.定义一个游标,选择student_Score表中所有的成绩记录,定义一个存储成绩的变量@cur_score,存储当前纪录的分数,定义一个存储当前分数所在成绩级别的变量@cur_level,用以存储成绩好坏的标记。算法如下:如果游标中的纪录不为空,从游标中取出当前纪录的成绩,判断成绩所在的分数段,把结果存储在变量@cur_level中,以@cur_level中的值更新当前纪录中的level字段。整个过程需要至少读取数据库两次,一次为获得纪录,一次需要写入数据库,每条记录都需要经过这个过程,效率相对低。
2.依次批量更新数据库,把所有的level字段的值设置为D,再次更新数据库,把成绩大于等于60的纪录的Level字段更新为C,依次更新B、A。这样做的一个缺点是有些纪录的Level字段被更新多次,比如一个记录最后的Level字段的值是A,则它首先被更新为D,依次被更新为C、B、A。这些重复的更新是可以被消除的,把算法改进一下就可以省去重复更新的花费。更新后的算法是这样的,把成绩介于0和60分的纪录的Level字段更新为D,依次更新各个分数段的成绩。实现的这种算法


相关文档:

pl/sql(1)

1 PLS_INTEGER
PLS_INTEGER可以存储一个有符号的整形值,其精度范围和BINARY_INTEGER一样,是:-2^31~2^31。
PLS_INTEGER和NUMBER比较起来,其优点是:
1).占有较少的存储空间;
2).可以直接进行算术运算(在NUMBER上不能直接进行算术运算,如果要计算,NUMBER必须先被转换成二进制)。所以在进行算术的时候PLS_INTEGER ......

如何查看SQL Server 补丁的版本?

 这个题目听起来十分拗口,英文应该这样写“How to find the service pack version installed on SQL Server using”,这个问题我一直在找,SQL Server一直没有像其他软件一样可以直接查看到版本+补丁号的方法,今天到一个老外的网站终于找到了:
有两种方法:
第一步:使用SQL语句查询
select @@version ......

怎么捕获自己session执行的sql,进行深入跟踪

 
alter session set timed_statistics = true; --可选
alter session set max_dump_file_size = unlimited; --可选,防止dump目录放不下
-- To enable the trace event 10046
alter session set events '10046 trace name context forever, level 8';
--设置TRACEFILE_IDENTIFIER参数值,让trace文件包括MyTrac ......

SQL UNIQUEIDENTIFIER

当你正在处理被多个站点(像在跨国公司条件下)使用的大数据库时,你也许会遇到保证表格对象唯一性这样的棘手问题。在这种情形下,可能只能靠UNIQUEIDENTIFIER来解决。UNIQUEIDENTIFIER是一个保存全局唯一标识符的GUID数据类型。GUID是一个保证唯一的二进制数,因此几乎没有别的计算机会产生同一个值。
GUID的唯一值是由计 ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号