高校收费管理系统数据库优化策略研究
摘要:数据库作为高校收费管理系统的核心和基础,其性能的优劣对整个系统的高效运行起着重要的作用。本文以高校收费管理系统中的sql server数据库为研究对象,在对数据库优化的一般策略进行研究的基础上,提出了适合高校收费管理系统的数据库优化方法。
关键词:sql server 数据库 优化
随着高校信息化管理程度的不断深入,收费管理已经从原来的手工开票、现金收取、人工记账阶段,转变为现在的银行代扣、软件管理阶段。目前,多数高校都采用了学生收费管理软件,基本上实现了信息化管理[1]。然而,随着高校办学规模的越来越大,很多的人开始采用数据库来处理信息。由此一来用户一多,吞吐量加大就为网络通讯带来了很大的压力。数据库的储存空间必须随之增长,由此使得数据库的性能问题受到了广泛的重视[2]。
1 sql语句优化
sql语句优化要达到的效果就是使用性能比较之下很好的sql语句转换为性能没有那么好的相应的sql语句。想要操作好数据库的话就要使用好sql语句,所以说能否高效的使用好sql语句完全影响到了数据库系统的性能的稳定性。早在各大高校收费管理系统研制开发出来的时候,sql语句在通常情况下就没能否展现出sql语句的性能的好坏,主要的原因就是那个时候数据库数据量过于少。只是在通过实践中应用过后,数据库中数据越来越丰富,当下系统是否能采取措施解决系统的响应速度相关的问题变得越来越重要。
下面就高校收费管理系统中sql语句优化的方法进行探讨:
1.1 避免检索表中所有的列 在收费管理系统开发初期,由于不同用户检索目的不明确,sql语句中往往使用select*from,因为该语句执行一次命令的时候都必须一一的扫描好表中所有列字段,所以就耗费了比较长的时间。www.11665.CoM该语句不必对所有的列进行检索的时候主要是在系统投入实际操作过后了,因为那个时候能够比较有目的的针对用户进行检索。例如对于教材管理人员来说,需要查询的结果是的每个学生的教材费缴费总额,可以将以上sql语句改为select学号,姓名,教材费from studentpay。
1.2 应尽可能不在where子句中使用“or”操作符 使用“or”操作符会导致全表扫描而导致效率差,例如要查询“软件工程”和“计算机科学与技术”两个专业的学费缴纳情况:
原语句:select学费from studentpay where 专业=“软件工程”or专业=“计算机科学与技术”
应将上面的查询语句改为:
select 学费from studentpay where专业=“软件工程”
union all
select学号from studentpay where 专业=“计算机科学与技术”
1.3 尽可能的不在where条件里使用非聚合表达式 由于非聚合表达式想要运用索引的话难度比较大,所以一般情况下sql server必须做大范围的扫描工作。如!=、is null或is not null、in、not ln等操作符构成的表达式都是非聚合表达式。使用非聚合表达式造成的后果就是查询效率急速下降。举例来说:
select*from studentpay where缴费额!= 4800,将无法通过索引来确定将要命中的行数,因此需要搜索该表的所有行。
1.4 避免正规表达式 matches、like关键字支持通配符匹配,技术上叫正规表达式。但这种匹配特别耗费时间。例如:select?from 学费信息表where缴费额like’45’即使在smt id字段上建立了索引,在这种情况下也还是采用顺序扫描的方式。如果把语句改为select*from studentpay where 缴费额>=4500 and 缴费额
2 索引优化
2.1 索引简介 索引是一个单独的、物理的数据结构,这个数据结构中包含表中的一列或若干列的值以及与此相关的指向表中物理标识。像这样的值的数据都也的逻辑指针的集合[3]。它之所是是一种逻辑性的集合,主要原因就是当指针在按照规定的顺序进行排列之前就能够逻辑的指向存储在表的指定列中的数据值。数据库使用索引的方法和使用书籍中的索引的方法在有很多的相同点,因为他们找特定值的方法就是采取搜索索引这样的方式,接下来才依据指针所指搜索到包含该值的行。
2.2 索引的优化作用 索引是从数据库中获取数据的最高效方式之一,绝大多数的数据库性能问题都采用索引技术得到解决。创建索引不但能维护被索引列的唯一性,而且提供快速
访问表中数据的策略。通过设计良好的索引,可以显著提高数据库查询和应用程序的性能。索引可以减少为返回查询结果集而必须读取的数据量,还可以强制表中的行具有唯一性,从而确保数据的完整性。
2.3 索引的使用原则 合理的使用索引可以加快数据检索速度,从而大大提高查询效率,然而索引的使用将占用磁盘空间,并且降低添加、删除和更新行的速度,因此索引的使用应考虑以下原则:①在经常进行搜索的列上建立索引。例如学号、姓名等经常搜索的列应建立索引。②对于查询中很少涉及的列或者重复值比较多的列,建立索引并不能提高查询效率。例如学生所在院系、专业等字段,不适宜建立索引。③在频繁进行排序或分组的列上,以及经常需要根据范围进行搜索的列上建立索引。④如表中有主键或者外键,一定要为其建立索引。因为主键可以加速定位到表中的某一行,结合索引的使用,可以是查询的速度加倍。⑤避免在组合列上使用索引,组合列上的索引不够灵活。⑥对一些特殊字段的数据类型,不要建立索引。
2.4 索引在高校收费管理系统中的应用 高校收费管理系统运行到一定阶段,往往包含存储着大量数据的表,这时人们在进行查询时,如果使用全表扫描,会花费非常多的时间,同时会导致查询超时这样的错误。通过合理地创建索引,可以避免全表扫描,从而获得性能的提升。
例如在在高校收费管理系统中查询某位学生信息的数据库中,一般是通过学生的学号和姓名来查询学生的详细信息,如果学号或者姓名没有建立索引,那么每次查询所执行的就是全表扫描。全表查询作业不适合数据表规模、批量数据量都比较大的数据表,因为在sql数据库数据处理过程总我们所消耗的信息资源过大。
例如在高校收费管理系统中创建数据库时,可以通过以下语句在studentpay中的学号列建立聚集索引
create clustered index 学号索引:
on studentpay(学号)
按照学生的学号建立索引,在查询请求的时候,sql server将查询索引中的学号,然后根据索引直接提取对应的行,以快速的查询学生缴费信息。
3 使用存储过程
存储过程(stored procedure)是一组编译在单个执行计划中的sql语句。它可以将一些固定的操作集中起来由数据库服务器来完成。sql server中的存储过程与其他编程语言中的过程类似,存储过程具备包含用于在数据库中执行操作(包含调用其他过程)的编程语句,并且能都接受输入参数,并以输出参数的格式向调用过程或批处理返回多个值。
在sql server中使用存储过程的优势主要体现在以下几个方面:
①加快系统运行速度。存储过程只在创建时进行编译,以后每次执行存储过程都不需再重新编译,而一般sql语言执行一次就编译一次,所以使用存储过程可以提高数据库执行速度。
②实现代码重用。可以实现模块化程序设计,存储过程一旦创建,以后可以在程序中调用任意多次。可以改进引用程序的可维护性,并且允许应用程序统一访问数据库。
③减少网络流量。存储过程在服务上存储,应用程序不必传输存储过程中的所有sql语句,只须传输包含过程名和参数值的execute或call语句,大大减少网络流量。
④封装复杂操作。当对数据库进行复杂操作时,例如对多个表进行插入记录、删除记录、更新操作时,可用存储过程将复杂操作封装起来与数据库的事务处理结合在一起使用。
⑤增强安全性。存储过程可以为用户指定相应的执行权限,这样可以增加应用程序的安全性,保护应用程序不受sql注入式攻击。
在高校收费管理系统中,对于学生用户经常要用到查询自己缴费信息的情况,合理使用存储过程,一方面可以在用户查询次数较多的情况下提高数据库查询的速度,另一方面也能够有效保证数据的安全性。
例如针对学生进行缴费情况查询,编写一下存储过程:
create procedure up_ studentpay
@type char(10)
as
select 学号,姓名,学费from studentpay
where 学号=@type
go
当查询学号为“20120109002”的学生学费信息时,只需以下sql语句执行存储过程:
up_ studentpay '20120109002'
4 结语
数据库系统的性能优化是一个比较大的研究范畴,包括硬件优化、服务器优化、操作系统优化等多个方面,本文主要基于高校收费管理系
统,从应用方面研究了数据库优化策略分析的基础上提出部分见解,贯穿于数据库应用系统整个生命周期。
参考文献:
[1]孟凡斌,王伟.高校财务管理信息化背景下学费管理系统的扩展[j].中国管理信息化.2012(1).
[2]朱喜梅.基于sql server数据库的性能调优策略与研究[d].哈尔滨理工大学硕士学位论文.2009.
[3]许瑞斌.数据库优化策略分析[j].数字技术与应用.2012(3).
[4]刘志成,宁云智.数据库系统原理与应用[m].机械工业出版社.2010(1).
上一篇:小学生错别字调查报告
下一篇:承包山林的协议书