`

关于数据库优化的一点点经验

    博客分类:
  • SQL
阅读更多

慎用游标(Cursor)

游标提供了对特定集合中逐行扫描的手段,一般使用游标来逐行遍历数据,根据取出数据条件的不同进行不同的操作。而对于多表和大表中定义的游标(大的数据集合)循环很容易使程序进入一个漫长的等待甚至死机,如果某些场合必须用到游标可以考虑先把查询到的数据放入临时表中,再对临时表定义游标进行操作
示例如下:

Create #tmp /* 定义临时表 */

( 字段1

字段2

... )

Insert into #tmp select * from TOTAL where 条件

Declare Mycursor cursor for select * from #tmp /*对临时表定义游标*/

索引(Index)的使用技巧

创建索引一般有两个目的:维护被索引列的惟一性和提供快速访问表中数据的策略。大型数据库有两种索引,即簇索引和非簇索引,一个没有簇索引的表是按堆结构存储数据,所有的数据均添加在表的尾部;而建立了簇索引的表,其数据在物理上会按照簇索引键的顺序存储,一个表只允许有一个簇索引,因此,根据B树结构,可以理解添加任何一种索引均能提高按索引列查询的速度,但与此同时会降低插入、更新、删除操作的性能,尤其是当填充因子(Fill Factor)较大时。所以对索引较多的表进行频繁的插入、更新、删除操作时,建表和索引时应设置较小的填充因子,以便在各数据页中留下较多的自由空间,减少页分割及重新组织的工作。

数据的一致性和完整性

为了保证数据库的一致性和完整性,设计人员往往会设计过多的表间关联(Relation),尽可能地降低数据冗余。表间关联是一种强制性措施,建立后,对父表(Parent Table)和子表(Child Table)的插入、更新、删除操作均要占用系统的开销,另外,最好不要用Identify 属性字段作为主键与子表关联。如果数据冗余低,数据的完整性容易得到保证,但增加了表间连接查询的操作。为了提高系统的响应时间,合理的数据冗余也是必要的。使用规则(Rule)和约束(Check)来防止系统操作人员误输入造成数据的错误是,设计人员的另一种常用手段,但是,不必要的规则和约束也会占用系统的不必要开销,需要注意的是,约束对数据的有效性验证要比规则快。所有这些,设计人员在设计阶段应根据系统操作的类型、频度加以均衡考虑。

事务的陷阱

事务是在一次性完成的一组操作。虽然这些操作是单个的操作,SQL Server能够保证这组操作要么全部都完成,要么一点儿都不做。正是大型数据库的这一特性,使得数据的完整性得到了极大的保证。

众所周知,SQL Server为每个独立的SQL语句都提供了隐含的事务控制,使得每个DML的数据操作得以完整提交或回滚,但是SQL Server还提供了显式事务控制语句,如:

BEGIN TRANSACTION 开始一个事务

COMMIT TRANSACTION 提交一个事务

ROLLBACK TRANSACTION 回滚一个事务

事务可以嵌套,可以通过全局变量@@trancount检索到连接的事务处理嵌套层次。要特别注意的是,每个显示或隐含的事物开始都使得该变量加1,每个事务的提交使该变量减1,每个事务的回滚都会使得该变量置0,而只有当该变量为0时的事务提交(最后一个提交语句时),才把物理数据写入磁盘。

数据类型的选择

数据类型的合理选择对于数据库的性能和操作具有很大的影响,有关这方面的书籍也有不少的阐述,笔者这里主要介绍几点经验:

1. Identify字段不要作为表的主键与其它表关联,这将会影响到该表的数据迁移。

2. Text 和Image字段属指针型数据,主要用来存放二进制大型对象(BLOB)。这类数据的操作相比其它数据类型较慢,因此要避开使用。

3. 日期型字段的优点是有众多的日期函数支持,因此,在日期的大小比较、加减操作上非常简单。但是,在按照日期作为条件的查询操作也要用函数,相比其它数据类型速度上就慢许多,因为用函数作为查询的条件时,服务器无法用先进的性能策略来优化查询而只能进行表扫描遍历每行。

分享到:
评论

相关推荐

    电子科技大学数据库PPT

    9. **数据库优化**:查询优化器选择执行查询的最佳计划,涉及索引、连接算法和统计信息的使用。性能调优包括SQL优化、存储优化和硬件配置优化。 10. **分布式数据库**:随着云计算的发展,分布式数据库成为趋势,它...

    中国唯一的数据库

    描述中的“为中华民族的伟大复兴贡献一点点”表达了这款数据库系统旨在服务于国家发展,助力中国的科技进步,尤其在信息技术领域。"小型数据库系统"意味着这可能是一个轻量级的解决方案,适用于资源有限或者对性能...

    数据库营销策略论文.doc

    随着信息技术的飞速发展,数据库营销作为一种现代营销策略,在企业市场活动中的重要性愈发凸显。通过搭建数据库系统,企业能够收集和分析大量消费者数据,实现市场定位的精准化,产品和服务的个性化,以及营销活动的...

    一点点成就感

    标题“一点点成就感”暗示了我们在讨论某个技术成就,可能是在音频处理方面,因为描述中提到了支持多种音频格式转换,如MP3和WAV。在IT领域,这通常涉及到音频编码和解码技术。 MP3(MPEG-1 Audio Layer 3)是一种...

    数据库客房管理系统

    - **目的**:将数据库理论与实际应用相结合,提高数据管理的自动化水平,减少人工错误,优化酒店运营流程。 - **要求**:系统需涵盖客房、客户、管理员的基础信息管理,支持查询、修改、预订、退房、换房等功能,...

    kettel从创建数据库转换到定时执行完整

    【Kettle从创建数据库转换到定时执行完整】的流程涵盖了数据处理的重要环节,包括数据转换、参数化和自动化执行。Kettle,也被称为Pentaho Data Integration (PDI),是一款强大的ETL(提取、转换、加载)工具,适用...

    DM3数据库互联设计论文.doc

    通过引入协调器的概念并优化数据库系统间的信息共享机制,DM3数据库系统在保证数据一致性的基础上,大幅提升了系统的处理效率和各部门的自主性。 传统DM2数据库系统的客户/服务器模型导致了全局字典的同步与数据...

    关于MySQL学习的一点点笔记.zip

    MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行数据操作。MySQL因其高效、稳定和易于管理的特点,在Web应用程序开发中扮演着至关重要的角色。以下是一些关于MySQL学习的...

    操作mysql的一点点学习整理

    以上是关于“操作MySQL的一点点学习整理”的核心内容。在实践中,不断学习和掌握这些知识点,将有助于你更有效地管理、操作和优化MySQL数据库。文件“mysql.php”可能是用于与MySQL数据库交互的PHP脚本,可以深入...

    高校图书馆数据库建设与维护.doc

    2. 支持知识获取:对于大学生和高校教师而言,数据库提供了一个集中的信息源,通过智能联想功能,帮助读者构建信息链,促进深度学习。 3. 规范信息整合:数据库能够对网络上分散的信息进行规范化整理,形成有序的...

    mysql一点点深入学习.zip

    MySQL是一种广泛使用的开源关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)进行数据操作。在深入学习MySQL的过程中,我们首先要理解它的基本概念和架构。 1. **MySQL架构** MySQL通常由服务器进程、...

    2个SQL优化语句,查询出来哪条SQL语句占据资源最多.rar

    通过分析这两个脚本,我们可以学习到以下几点关于SQL优化的知识: 1. **性能监控**:了解SQL语句的执行情况是优化的第一步。数据库通常提供了丰富的性能监控数据,如`V$SQL`(Oracle)和`Performance Schema`...

    产品市场策略与网络数据库营销论文.doc

    网络数据库营销是一种以数据为基础,通过互联网技术实现的互动式营销方式,它强调对客户信息的深度挖掘和有效利用,以提供个性化的服务,提升客户满意度,增强企业竞争力。 网络数据库营销的核心是将客户数据存储在...

    学习笔记每天长知识进步一点点

    Android是全球最广泛使用的移动操作系统之一,它的开发涉及到了许多方面的知识,包括但不限于UI设计、活动管理、服务、广播接收器、内容提供者、多线程处理、网络通信、数据库操作以及性能优化等。通过这份学习笔记...

    物资企业的数据库营销战略探索.doc

    面对这一挑战,铁路物资企业需要寻找新的营销策略,而数据库营销成为了其中的关键。 **数据库营销的定义与作用** 数据库营销是一种基于企业收集并处理的客户数据,来制定个性化营销策略的方法。它强调每个客户都是...

    数据库在学生管理中的运用.doc

    总的来说,数据库在学生管理中的运用极大地优化了教育资源配置,提升了管理效率,降低了运营成本,同时也更好地保护了学生隐私。它不仅解决了传统管理方式的诸多问题,还为教育信息化提供了强有力的支持,成为现代...

    计算机毕业设计:SSM大美新疆在线论坛交流系统 (数据库+程序+论文),保证可靠运行,附赠计算机答辩PPT 

    用户可以通过友好的界面,轻松浏览和发布帖子,参与讨论和互动,分享关于大美新疆的点点滴滴。 项目还包含了一篇详细的论文,深入探讨了在线论坛交流系统的设计与实现过程,分析了系统的架构、功能以及优化策略,为...

    nodejs, express, mysql, 记录一点点学习记录.zip

    3. **MySQL数据库**:安装配置、基本SQL语法、事务处理、存储过程、索引优化。 4. **连接与查询**:使用`mysql2`库建立连接、执行SQL语句、处理结果集、错误处理。 5. **RESTful API设计**:理解HTTP方法、状态码、...

    高校财务样本数据库研究.doc

    这种方法显著减少了样本数据库的建立时间,降低了系统资源消耗,从而优化了财务数据分析的过程。 在样本数据库的构建中,数据挖掘与分析是核心环节。通过财务数据分析,可以对高校的资源配置、预算管理、成本核算和...

    浅谈塑料模具型数控加工过程优化设计.doc

    知识库存储了关于模具加工的专业知识和技术,而数据库则记录了具体的加工参数和历史数据。通过这两者的结合,可以实现参数的智能控制和调整,从而优化加工过程,提高效率并减少错误。 3. **建立塑料模具型腔数控...

Global site tag (gtag.js) - Google Analytics