用索引提高SQL Server性能

Sql Server 重建索引提高SQL Server性能 大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server要全表进行扫描读取表中的每一个记录才能找到所要的数据   可以通过DBCC SHOWCONTIG来确定是否需要重构表的索引。   DBCC SHOWCONTIG用法         以PSNACCOUNT数据表作为例子   DECLARE @table_id INT SET @table_ 阅读详情

用索引提高SQL Server性能

作者: TechRepublic.com

特别说明:
在微软的SQL Server系统中通过有效的使用索引可以提高数据库的查询性能,但是性能的提高取决于数据库的实现。在本文中将会告诉你如何实现索引并有效的提高数据库的性能。

在关系型数据库中使用索引能够提高数据库性能,这一点是非常明显的。用的索引越多,从数据库系统中得到数据的速度就越快。然而,需要注意的是,用的索引越 多,向数据库系统中插入新数据所花费的时间就越多。在本文中,你将了解到微软的SQL Server数据库所支持的各种不同类型的索引,在这里你将了解到如何使用不同的方法来实现索引,通过这些不同的实现方法,你在数据库的读性能方面得到的 远比在数据库的整体性能方面的损失要多得多。

索引的定义
索引是数据库的工具,通过使用索引,在数据库中获取数据的时 候,就可以不用扫描数据库中的所有数据记录,这样能够提高系统获取数据的性能。使用索引可以改变数据的组织方式,使得所有的数据都是按照相似的结构来组织 的,这样就可以很容易地实现数据的检索访问。索引是按照列来创建的,这样就可以根据索引列中的值来帮助数据库找到相应的数据。

索引的类型
微软的SQL Server 支持两种类型的索引:clustered 索引和nonclustered索引。Clustered 索引在数据表中按照物理顺序存储数据。因为在表中只有一个物理顺序,所以在每个表中只能有一个clustered索引。在查找某个范围内的数据时, Clustered索引是一种非常有效的索引,因为这些数据在存储的时候已经按照物理顺序排好序了。

Nonclustered索引不会影响到下面的物理存储,但是它是由数据行指针构成的。如果已经存在一个clustered索引,在 nonclustered中的索引指针将包含clustered索引的位置参考。这些索引比数据更紧促,而且对这些索引的扫描速度比对实际的数据表扫描要 快得多。

如何实现索引
数据库可以自动创建某些索引。例如,微软的SQL Server系统通过自动创建唯一索引来强制实现UNIQUE约束,这样可以确保在数据库中不会插入重复数据。也可以使用CREATE INDEX语句或者通过SQL Server Enterprise Manager来创建其他索引,SQL Server Enterprise Manager还有一个索引创建模板来指导你如何创建索引。

得到更好的性能
虽然索引可以带来性能上的优势,但是同时也将带来一定的代价。虽然SQL Server系统允许你在每个数据表中创建多达256个nonclustered索引,但是建议不要使用这么多的索引。因为索引需要在内存和物理磁盘驱动 器上使用更多的存储空间。在执行插入声明的过程中可能会在一定程度上导致系统性能的下降,因为在插入数据的时候是需要根据索引的顺序插入,而不是在第一个 可用的位置直接插入数据,这样一来,存在的索引越多将导致插入或者更新声明所需要的时间就越多。

在使用SQL Server系统创建索引的时候,建议参照下面的创建准则来实现:

  • 正确的选择数据类型:在索引中使用某些数据类型可以提高数据库系统的效率,例如,Int,bigint, smallint,和tinyint等这些数据类型都非常适合于用在索引中,因为他们都占用相同大小的空间并且可以很容易地实现比较操作。其他的数据类型 如char和varchar的效率都非常低,因为这些数据类型都不适合于执行数学操作,并且执行比较操作的时间都比上面提到数据类型要长。

  • 确保在使用的过程中正确的利用索引值:在执行查询操作时,可能所使用的列只是clustered的一部分,这时 尤其要注意的是如何使用这些数据。当用这些数据列作为参数调用函数时,这些函数可能会使现有的排序优势失效。例如,使用日期值作为索引,而为了实现比较操 作,可能需要将这个日期值转换为字符串,这样将导致在查询过程中无法用到这个日期索引值。

  • 在创建多列索引时,需要注意列的顺序:数据库将根据第一列索引的值来排列记录,然后进一步根据第二列的值来排序,依次排序直到最后一个索引排序完毕。哪一列唯一数据值较少,哪一列就应该为第一个索引,这样可以确保数据可以通过索引进一步交叉排序。

  • 在clustered索引中限制列的数量:在clustered索引中用到的列越多,在nonclustered索引中包含的clustered索引参考位置就越多,需要存储的数据也就越多。这样将增加包含索引的数据表的大小,并且将增加基于索引的搜索时间。

  • 避免频繁更新clustered索引数据列:由于nonclustered 索引依赖于clustered 索引,所以如果构成clustered 索引的数据列频繁更新,将导致在nonclustered中存储的行定位器也将随之频繁更新。对于所有与这些列相关的查询来说,如果发生记录被锁定的情况 时,这将可能导致性能成本的增加。

  • 分开操作(如果可能的话):对于一个表来说,如果需要进行频繁的执行插入、更新操作,同时还有大量读操作的话,在可能的情况下尝试将这个表分开操作。所有的插入和更新操作可以在一个没有索引的表中操作,然后将其复制到另外一个表中,在这个表里有大量的索引可以优化读数据的能力。

  • 适当的重建索引:Nonclustered索引包含clustered索引的指针,这样一来 Nonclustered索引将从属于clustered 索引。当重建clustered索引时,首先是丢弃原来的索引,然后再使用CREATE INDEX 来创建索引,或者在使用CREATE INDEX 声明的同时将DROP_EXISTING 子句作为重建索引的一部分。将丢弃和创建分为几步将会导致多次重建nonclustered 索引,而不象使用DROP_EXISTING 子句那样,只重建一次nonclustered 索引。

  • 明智的使用填充因子:数据存储在那些具有固定大小的连续内存页面内。随着新的记录行的加入,数据内存页将逐渐被 填满,系统就必须执行数据页的拆分工作,通过这个拆分工作将部分数据转移到下一个新的页面当中。这样的拆分之后,将加重系统的负担,并且会导致存储的数据 支离破碎。填充因子可以维护数据之间的缺口,一般在创建索引的时候,该索引的填充因子就已经被设置好了。这样一来,可以减少插入数据所引起的页面分裂的次 数。因为只是在创建索引的时候才维护空间的大小,在增加数据或者更新数据时不会去维护空间的大小。因此,要想能够充分的利用填充因子,就必须周期性的重建 索引。由填充因子所造成的缺口将导致读性能的下降,因为随着数据库的扩张,越来越多的磁盘存取工作需要读取数据。所以,在读的次数超过写的次数的时候,很 重要的一点是考虑使用填充因子还是使用缺省方式合适。

    管理层的决策
    通过有效的使用索引,可以在微软的SQL Server系统中实现很好的查询功能,但是使用索引的效率取决于几种不同的实现决策。在索引的性能平衡方面,要做出正确的数据库管理决策意味着需要在良 好的性能和困境中抉择。在特定的情况下,本文给出的一些建议将有助于你做出正确的决策。(责任编辑:刘燕之)

 
TEC激光器精密温控平台设计:从PID整定到热装配实战全解析 在光通信系统中,激光器波长稳定性直接决定链路性能,而温度漂移是导致波长偏移、眼图塌陷和误码率升高的首要元凶。精密温控作为解决这一问题的核心技术,通常依赖TEC(半导体制冷器)实现主动双向热管理。TEC基于帕尔贴效应,通过改变电流方向完成制冷或加热,但真正实现±0.05°C的高精度控制,需要深入理解热路设计、驱动电路架构与PID算法整定三者的协同。本文从工程实践角度出发,系统讲解TEC器件选型要点、NTC温度传感器标定方法、基于STM32与功率运放的分立H桥驱动方案,并分享热装配工艺、PID参数整定流程以及冷 阅读详情

相关推荐

用74LS194和555定时器DIY流水灯:一个经典的数字电路课程设计复盘(附Multisim仿真文件)

本文详细介绍了使用74LS194移位寄存器和555定时器搭建八路彩灯控制器的完整过程,包括硬件选型、电路设计、调试技巧及常见问题解决方案。作为经典的数字电路课程设计,该项目涵盖了EDA工具应用、电路原理图设计和Multisim仿真等核心技能,适合电子工程学习者实践参考。

weixin_29185199的博客 426

Sql Server查询性能优化之索引篇【推荐】

Sql Server查询性能优化之索引篇 索引基础知识 聚集索引和非聚集索引 索引碎片 索引设计指南

胡杰的专栏 1万+

NVMe-MI --- Message Servicing Model(消息服务模型)

本文主要介绍NVMe-MI消息服务模型,两个主要类别是请求消息和响应消息。并介绍带外机制消息服务状态机。

智小星的博客 2014

SqlServer中,表变量、临时表、普通磁盘表,插入和查询性能实测

我们针对三种类型表实测一下性能,都同样插入30万条记录,再查询其中一条记录,来测试插入性能和查询性能;

科技是第一生产力 1493

Isaac Sim 车辆动力学:从参数调优到户外仿真的挑战与实战

本文深入探讨了Isaac Sim在车辆动力学仿真中的应用,从参数调优到户外场景模拟的实战经验。详细解析了悬架系统、轮胎物理模型等核心参数的设置技巧,并分享了应对户外仿真挑战的实用方案。通过Vehicle Wizard高级使用和传感器配置,帮助开发者高效完成车辆仿真与算法开发。

weixin_29192211的博客 404

OTA 升级失败/回滚策略设计:打造安全可靠的双分区/断点续传/签名校验方案

双分区机制(A/B Partitioning)是OTA升级的“保险箱”。简单来说,设备存储分为两个分区:A分区(当前运行)和B分区(备用)。升级时,新固件写入B分区,A分区保持不变。如果升级成功,系统切换到B分区运行;如果失败,设备直接回滚到A分区,完全不受影响。这就像玩游戏存档:你打Boss前存了个档,万一挂了还能读档重来。双分区就是设备的“读档”机制,避免了变砖的尴尬。以Android设备为例,Google从Android 7.0开始强制引入A/B分区机制(Seamless Updates)。

大模型大数据攻城狮的专栏 1235

程序员面试技巧:如何通过索引说数据库优化能力

博文视点Broadview 2017-09-06 16:58 索引是数据库优化所必需的工具,在面试的时候一般不会问概念性的问题,会问什么问题又如何回答呢?请看下文。 本文选自《Java Web轻量级开发面试教程》一书 如果我们需要招个Java方面的高级程序员,一方面看年限(本科3年),具体到数据库方面的技能要求,包括如下三个方面: 第一,是否会基本的增删改查,存储过程等技能

u011277123的博客 623

华为od统一考试B卷【单词搜索】C++ 实现

找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。意区分英文字母大小写,并且您只能上下左右行走,不能走回头路。

MISAYAONE的博客 710

通过 SQL Server 2005 索引视图提高性能

撰稿人:Eric Hanson投稿人:Gail Erickson、Lubor Kollar、Jason Ward摘要:本文档介绍了 SQL Server 2005 Enterprise Edition 中经过改进的索引视图功能。文中对索引视图进行了说明介绍,并讨论了可通过该功能改善性能的一些具体情况。 本页内容 什么是索引视图?  应用索引视图的优点  SQL Server 2005

wooley的专栏 1414

基于STM32、HAL库的WF162A 11BA T&R气压传感器 驱动程序设计

/ 转换为7位地址。* @param temperature: 存储读取到的温度值(°C)* @param temperature: 存储读取到的温度值(°C)* @param pressure: 存储读取到的压力值(bar)* @param pressure: 存储读取到的压力值(bar)* @param range: 压力范围(bar)

corlin6688的博客 361

前端使用二开Thingsboard一、二、三事(三)-规则链

以项目实战为基础,逐步介绍前端在thingsboard系统二次开发中的一些注意事项以及一些thingsboard一些页面功能讲解,为前端人员开发使用thingsboard提供一种可靠思路,打造一个完美的物联网系统。

weixin_43163457的博客 863

DBCC DBREINDEX重建索引提高SQL Server性能

DBCC DBREINDEX重建索引提高SQL Server性能 大多数SQL Server表需要索引来提高数据的访问速度,如果没有索引,SQL Server 要进行表格扫描读取表中的每一个记录才能找到索要的数据。索引可以分为簇索引和非簇索引,簇索引通过重排表中的数据来提高数据的访问速度,而非簇索引则通过维护表中的数据指针来提高数据的索引。 1. 索引的体系结构 为什么要不断的维护表的索引?首先,

arrow_gx的专栏 1921

ADS基础教程19 - 电磁仿真(EM)基本概念和实操

一、引言二、基本概念1.EM介绍2.Momentum介绍3.FEM介绍4.Substrate介绍三、创建Layout并进行Momentum仿真1.创建Layout2.添加Microtrip(微带线)3.添加Substrate4.Momentum仿真四、总结EM全称Electromagnetic,即electro(电)magnetic(磁)。ADS为设计和评估现代通信系统产品提供了电磁仿真工具(EM)。EM包括Momentumsimulator(动量仿真器)和FEM。

XZ_ZC的博客 1万+

分开SQL Server的主键和索引,使用聚类索引提高性能!

   一直以来,对数据库只是会用,很少系统的学习过,很多概念知道但是不是很熟悉。   索引--可以加快搜索速度。这是我脑子里面的概念,可是SQL Server中索引有聚类索引(CLUSTERED)和非聚类索引。我数据表一般有ID字段,我就自然把它设置成了主键;而SQL Server会将主键设置为聚类索引,很多情况下,这是一种性能损失!!1. SQL Server联机丛书中的介绍根据数据库的功能,可

4802

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

用SQL Server 2005索引视图提高性能二

 视图限制    如要在 SQL Server 2005 中的视图上创建一个索引,相应的视图定义必须包含:    ANY、NOT ANY                        OPENROWSET、OPENQUERY、OPENDATASOURCE    不精确的(浮型、实型)值上的算术              OPENXML    COMPUTE、COMPUTE BY          

jackfor001的专栏 1340

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

dbcc dbreindex server sql_SQL Server性能的提高,可通过DBCC DBREINDEX重建索引

以下的文章主要介绍的是DBCC DBREINDEX重建索引对SQL Server性能进行提高的实际操作步骤,大多数SQL Server数据库表需要索引来对数据的实际访问速度进行提高,如果没有索引,SQL Server要进行表格扫描读取表中的每一个记录才能找到索要的数据。索引可以分为簇索引和非簇索引,簇索引通过重排表中的数据来提高数据的访问速度,而非簇索引提高SQL Server性能则通过维护表中的...

weixin_39782752的博客 429

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

SQL Server-聚焦过滤索引提高查询性能

过滤索引,在查询条件上创建非聚集索引 过滤索引是SQL 2008的新特性,被应用在表中的部分行,所以利用过滤索引能够提高查询,相对于全表扫描它能减少索引维护和索引存储的成本。当我们在索引上应用WHERE条件时就是过滤索引。也就是满足如下格式: CREATE NONCLUSTERED INDEX ON () WHERE ; GO 下面我们来看一个简单的查询 USE Adv

n9nzjx57bf的博客 297

利用 SQL Server 过滤索引提高查询语句的性能

Microsoft SQL Server 过滤索引(筛选索引)是指基于满足特定条件的数据行进行索引。与全表索引(默认创建)相比,设计良好的筛选索引可以提高查询性能、减少索引维护开销并可降低索引存储开销。本文就给大家介绍一下 Microsoft SQL Server 中的过滤索引功能。

Tony.Dong的专栏 1352

用SQL Server 2005索引视图提高性能一

 一、索引视图   多年以来,MicrosoftSQL Server一直支持创建称为视图的虚拟表。通常,这些视图的主要作用是:   提供一种安全机制,将用户限制到一个或多个基表的某个数据子集中。   提供一种机制,允许开发人员自定义用户通过逻辑方式查看存储在基表中的数据的方式。   通过 SQL Server 2000,SQL Server 视图的功能得到了扩展,实现了系统性能...

aitanwu4387的博客 148

使用 SQL Server 2000 索引视图提高性能

使用 SQL Server 2000 索引视图提高性能点击此处阅读全文

975

dbcc dbreindex server sql_DBCC DBREINDEX重建索引提高SQL Server性能

DBCC DBREINDEX重建索引提高SQL Server性能[转载]大多数SQLServer表需要索引来提高数据的访问速度,如果没有索引,SQLServer要进行表格扫描读取表中的每一个记录才能找到索要的数据。索引可以分为簇索引和非簇索引,簇索引通过重排表中的数据来提高数据的访问速度,而非簇索引则通过维护表中的数据指针来提高数据的索引。1.索引的体系结构为什么要不断的维护表的索引?首先,...

weixin_39648539的博客 366
上一篇: Struts标记库
下一篇: 网站之MySQL 索引分析和优化
fuweibo
博客等级 码龄23年 36粉丝 68原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值