`
lexinquan
  • 浏览: 47206 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

数据库设计经验之--存储过程编写

阅读更多
1、数据库访问,最好全部固化成存储过程,保存在数据库中。同时尽量不使用trigger机制,难以管理及查错。

2、数据库操作时,仅选择有用列。除非有充足理由,不应该出现select * 的形式。

3、存储过程中尽量少用会引起存储过程重新编译的脚本,例如:动态sql语句、临时表、DDL语句。

4、以DB2为例,只读操作加上for fetch(read) only,如果只需要检索结果的几个,可以加上order by,fetch first x rows语句。

5、存储过程尽量精简,只实现简单IO,业务逻辑编放在中间层实现。

6、对于多个小更新操作,可以把所有更新放入一个批处理中,避免多次提交。

7、对于大事务,要尽快提交,提高数据库的并发性。与数据操作无关的语句不要放在事务中进行,特别是在开发分布式应用程序时尤其要注意。

8、每个数据库产品都会提供不同隔离级别的访问方式,以适应不同的并发性要求。在做实时查询时,如果可以,尽量用不加锁的访问方式,如SQLServer中的WITH(NOLOCK)表提示,DB2中的WITH UR,甚至可以把这当成编程规范(除非必须加锁时),提高并发性。

9、实时应用程序要加快用户操作响应,当数据库查询较慢时可以在界面有互动,或先返回部分数据给前台操作用户,或在数据库中先做一些预计算以备查询。

10、存储过程中尽量不要使用游标,使用集合操作方式。

11、存储过程中的SQL查询过滤条件太多,导致数据库负载增加,影响性能。可以适当考虑修改SQL查询,只通过索引访问数据库,再通过应用层进行条件过滤。

12、尽量少用模糊查询,由于like本身效率就比较低,应该尽量避免查询条件使用like。由于匹配算法的关系,模糊查询的字段长度越大,模糊查询效率越低。可通过索引访问数据后,再进行过滤。

13、考虑不等号操作符可能会引起全表扫描。可通过使用索引,将不等号改成用OR实现。如 id<>‘C’改为 id<’C’ or id>’C’,这样就能使用索引。(注:目前有些数据库查询优化器能自动优化,可以查看具体执行计划)

14、考虑 NOT IN 会导致产生笛卡尔积,使得访问效率低下。可以通过左外连接方式(Ta.C1 = Tb.C1)并加上 Tb.C1 is null 来处理。(注:目前有些数据库查询优化器能自动优化,可以查看具体执行计划)

15、如果怀疑SQL语句有性能问题,一定要用解释工具检查其执行成本。

16、注意进行数据库统计优化操作,有利于数据库查询优化器自动优化访问计划。
分享到:
评论

相关推荐

    数据库设计开发规范-阿里.pdf.zip

    数据库设计与开发规范是软件开发过程中的重要环节,特别是在大型企业如阿里巴巴这样的环境中,严谨的数据库设计规范能够确保系统的高效、稳定和可扩展性。以下是对"数据库设计开发规范-阿里.pdf.zip"文件内容的详细...

    数据库设计文档 --软件开发中数据库设计

    - 通过索引设计、查询优化、存储过程和触发器来提高数据库的响应速度。 - 考虑到大数据量和并发访问的情况,可能需要进行读写分离、分片或分布式数据库设计。 8. **数据库备份与恢复策略** - 设计合理的备份计划...

    数据库设计规范---适用于各种数据库

    存储过程命名规范是指数据库存储过程的命名规则。字段由前缀和实际名字组成,中间用下划线连接。前缀使用小写字母sp,表示存储过程。 数据库设计文档规范 数据库设计文档规范是指数据库设计文档的编写规则。所有...

    数据库课程设计---学生成绩管理

    【数据库课程设计---学生成绩管理】是一门实践性强、注重理论与实际操作结合的课程。在这个项目中,学生被要求设计并实现一个学生成绩管理系统,以解决传统人工管理方式存在的诸多问题,如效率低下、保密性差、数据...

    数据库课程设计---工资管理系统(程序+源码+文档)

    【数据库课程设计---工资管理系统】是一项综合性的项目,旨在帮助学生深入理解数据库系统与应用程序的交互,特别是如何利用Java和MySQL来实现一个实际的管理工具。在这个系统中,学生将有机会学习并应用到多种关键的...

    数据库课程设计--学籍管理系统

    完成设计后,开发者将编写SQL脚本创建数据库对象,如表、视图、存储过程等,并编写前端应用程序接口以供用户交互。最后,通过单元测试和集成测试确保系统功能的正确性和稳定性。 总的来说,这个课程设计涵盖了...

    数据库设计开发规范-阿里_数据库_falloj4_MYSQL_

    数据库设计与开发规范是软件开发过程中的重要环节,特别是在大型企业如阿里巴巴这样的环境中,严谨的数据库规范能够确保数据的一致性、稳定性和高效性。本规范主要针对MySQL,但也适用于Oracle等其他数据库系统。 1...

    数据库课程设计---人事管理系统

    在《数据库原理与应用》课程设计报告.doc文档中,学生应详细记录并阐述上述过程,包括设计思路、遇到的问题及解决方案、系统特点和优势,以及对未来改进的思考。此外,报告还可能包含系统截图、关键代码片段和测试...

    数据库课程设计---超市收银系统

    在本次的数据库课程设计中,我们关注的主题是“超市收银系统”,该系统采用C++编程语言进行实现,并结合数据库技术来存储和管理数据。这是一个典型的企业级应用实例,可以帮助学生深入理解数据库与编程的结合,提升...

    数据库课程设计--职员管理系统

    数据库课程设计是IT教育中的一个重要环节,它通常涵盖了数据库理论、SQL语言、数据库设计与实现等方面的知识。在“职员管理系统”这个项目中,我们可以深入学习和应用这些知识点。以下是对这个主题的详细说明: ...

    模板-数据库设计说明书.doc

    该文档通常包括以下几个部分:项目概况、数据库设计概述、逻辑设计、物理设计、数据模型、数据字典、索引设计、视图设计、存储过程设计、触发器设计、安全设计等。 数据库设计说明书的作用是: 1. 明确数据库的...

    数据库课程设计--超市管理系统(含报告)

    在实际的课程设计过程中,学生需要编写代码来实现各个模块的功能,同时编写SQL语句来创建和操作数据库。此外,提供的报告可能包含了系统的需求分析、设计决策、数据库模式、程序流程图以及测试结果等内容,这些都是...

    数据库课程设计----C#版学生信息管理系统

    《C#版学生信息管理系统——基于数据库的课程设计详解》 在信息技术日益发达的今天,数据库管理和信息系统的设计已经成为计算机科学教育的重要组成部分。本篇将详细探讨一个以C#编程语言和ADO.NET技术为核心的...

    数据库设计--ER图

    在设计过程中,需要注意避免冗余数据和实体间的冗余联系。冗余数据指的是可以通过其他基本数据推导出来的数据;冗余联系则是指可以从基本联系中推导出的关系。 ##### 3. 基本E-R图设计 基本E-R图是在初步E-R图的...

    数据库课程设计--图书馆管理系统.docx

    - **存储过程**:至少设计1个存储过程,用于数据更新或修改。 - **安全性**:规划系统的角色、用户、权限,并通过SQL语句实现。 - **备份策略**:指定备份方案,编写备份命令。 #### 四、具体实现 - **ER模型**...

    数据库课程设计--教材科管理系统

    总的来说,这个教材科管理系统涵盖了数据库设计的多个方面,包括需求分析、模型设计、数据库创建、脚本编写以及性能优化。通过这个项目,学生可以全面掌握数据库理论知识,并提升实际操作能力。

    数据库课程设计--仓库管理系统.doc

    设计过程中需遵循科学、规范和合理的原则,确保数据库设计符合实际情况和需求。 在数据库设计方面,重点关注以下几点: 1. 数据库设计应是对现实世界的抽象,要求设计科学、规范,满足业务需求。 2. 数据表设计必须...

    数据库课程设计--图书管理系统

    以下将详细讨论这个系统的设计过程,包括需求分析、概念结构设计、逻辑结构设计、物理设计和数据库的实施。 **一、需求分析** 需求分析是设计的起点,主要包括对系统功能的文字表述和数据流图的绘制。需求文字表述...

    数据库设计说明书-完整版.doc

    除此之外,设计过程中可能还会涉及物理设计,包括存储策略、索引优化、分区策略等,以提升数据库的性能。同时,安全性和备份恢复策略也是数据库设计不可忽视的部分,确保数据的安全存储和在出现故障时能快速恢复。 ...

    数据库课程设计--改改可用

    数据库课程设计是软件工程专业学生在学习过程中的一项重要实践任务,旨在通过实际操作来加深对数据库理论知识的理解,提升数据库管理、设计与开发能力。在这个项目中,文档齐全,功能强大,注释详细,非常适合初学者...

Global site tag (gtag.js) - Google Analytics