您当前位置:优侠库 > 资讯攻略 >
来源:未知
2021-12-16 15:12:52 浏览: 分类:资讯攻略

实用技巧:优化SQL Server数据库查询方法

sql server数据库查询速度慢的原因有很多,常见的有:

1.没有索引或者没有使用索引(这是最常见的查询速度慢的问题,是编程的一个缺陷)

2.I/O吞吐量低,形成瓶颈效应。

3.该查询未优化,因为未创建计算列。

4.内存不足

5.网速慢

6.查询的数据量太大(可以使用多次查询,其他方法可以减少数据量)

7.锁定或死锁(这也是慢速查询最常见的问题,是编程的一个缺陷)

8.sp_lock,sp_who,活跃用户检查,因为读写竞争资源。

9.返回了不必要的行和列。

10.查询语句不正确且未优化。

●可以通过以下方法优化查询:

1.将数据、日志和索引放在不同的I/O设备上,以提高读取速度。过去,Tempdb可以放在RAID0上,但不支持sql2000。数据越大,改善I/O就越重要..

2.垂直和水平分割表格以减小表格的大小(sp_spaceuse)

3.升级硬件

4.根据查询条件建立索引,优化索引和访问方式,限制结果集中的数据量。注意填充因子要合适(最好用默认值0)。索引应该尽可能小,最好使用字节数小的列(参考索引的创建)。不要为值有限的字段(如性别字段)构建单一索引。

5.提高网速。

6.扩展服务器的内存。Windows 2000和SQL server 2000可以支持4-8G的内存。

配置虚拟内存:应该根据计算机上并发运行的服务来配置虚拟内存的大小。运行Microsoft SQL Server?000,考虑将虚拟内存大小设置为计算机中安装的物理内存的1.5倍。如果还安装了全文搜索功能,并且您计划运行Microsoft search服务来执行全文索引和查询,请考虑:将虚拟内存大小配置为至少是计算机中安装的物理内存的3倍。将SQL Server最大服务器内存服务器配置选项配置为物理内存的1.5倍(虚拟内存大小设置的一半)。

7.增加服务器CPU的数量;但必须明白,并行处理和串行处理需要更多的内存等资源。使用并行还是串行笔划由MsSQL自动评估选择。如果一个任务被分解成多个任务,它可以在处理器上运行。比如延迟查询的排序、连接、扫描和按语句分组的同时执行,SQL SERVER根据系统的负载决定最优的并行级别,需要消耗大量CPU的复杂查询最适合并行处理。但是,更新操作update、INSERT和DELETE不能并行处理。

8.如果使用like进行查询,单纯使用index是不行的,但是全文索引需要空。像“%a %”一样使用索引,像“% a”一样不使用索引。用like“% a %”查询时,查询时间与字段值的总长度成正比,所以不能用CHAR类型,只能用VARCHAR。为长值字段建立全文索引。

9.数据库服务器和应用服务器的分离;OLTP和OLAP的分离

10.分布式分区视图可以用来实现数据库服务器联合体。

联合体是一组单独管理的服务器,但它们相互合作来分担系统的处理负荷。这种通过对数据进行分区来形成数据库服务器联盟的机制可以扩展一组服务器来支持大型多层网站的处理需求。有关详细信息,请参见设计联邦数据库服务器。

a、在实现分区视图之前,必须对表进行水平分区。

b、创建成员表后,在每个成员服务器上定义一个分布式分区视图,每个视图同名。这样,引用分布式分区视图名称的查询可以在任何成员服务器上运行。系统的运行就好像每个成员服务器都有一个原始表的副本,但实际上每个服务器上只有一个成员表和一个分布式分区视图。数据的位置对应用程序是透明的。

1.重建索引DBCC REINDEX,DBCC INDEXDEFRAG,收缩数据和日志DBCC SHRINKDB,DBCC SHRINKFILE。设置自动收缩日志。对于大型数据库,不要设置数据库自动增长,这会降低服务器的性能。

非常强调T-sql的编写。以下是共同点:一、DBMS处理查询计划的流程如下:

1.检查查询语句的词法和语法。

2.将语句提交给DBMS的查询优化器。

3.优化器执行代数优化和访问路径优化。

4.预编译模块生成查询计划。

5.然后将其提交给系统,以便在适当的时间进行处理和执行。

6.最后,将执行结果返回给用户。

其次看SQL SERVER的数据存储结构:一页的大小是8K(8060)字节,八页是一个盘区,按照B树存储。

12.提交和回滚的区别。回滚:回滚所有内容。提交:提交当前的事情。不需要用动态SQL写东西。如果要写的话,请写在外面,比如:begin tran exec(@s) commit trans或者把动态SQL写成函数或者存储过程。

13.在查询Select语句中,使用Where语句限制返回的行数,以避免表扫描。如果返回不必要的数据,会浪费服务器的I/O资源,增加网络负担,降低性能。如果表非常大,那么在表扫描过程中会被锁定,其他连接将被禁止访问表,这将产生严重的后果。

14.SQL的注释语句对执行没有影响。

15.尽量不要用光标,它占用了很多资源。如果需要逐行执行;尝试采用非光标技术;如:在客户端骑行;使用临时表;表变量;子查询;案例陈述;等等。

游标可以根据其支持的提取选项进行分类:只进行必须从第一行提取到最后一行。FetcH NEXT是唯一允许的FetcH操作,也是默认方式。可滚动性可以在游标中任意位置随机选择任意行。游标技术在SQL2000下变得非常强大,其目的是支持循环。

有四个并发选项,READ_ONLY:不允许通过游标进行更新,组成结果集的行中没有锁。

优化值:乐观并发控制是事务控制理论的标准部分。并发控制用于第二个用户在打开游标和更新行之间的时间间隔内很少有机会更新行的情况。当使用此选项打开游标时,没有锁来控制它的行,这将有助于最大化它的处理能力。如果用户试图修改某一行,该行的当前值将与上次提取该行时获得的值进行比较。如果任何值发生变化,服务器将知道其他人已经更新了该行,并将返回一个错误。如果值相同,服务器将执行修改。

关键词:SQLServer、数据库

优侠库网站每天提供最新最热门的安卓手机软件、游戏下载、分享热门手游资讯攻略教程、手机软件教程步骤,专注安卓手机游戏软件下载。

本文链接:http://www.123down.cn/gonglue/227278.html

攻略资讯
安卓软件
安卓游戏