SQL Server 索引结构及其使用(四)

SQL Server 索引结构及其使用 立即下载
导读:
   聚集索引的重要性和如何选择聚集索引
  在上一节的标题中,笔者写的是:实现小数据量和海量数据的通用分页显示存储过程。这是因为在将本存储过程应用于“办公自动化”系统的实践中时,笔者发现这第三种存储过程在小数据量的情况下,有如下现象:
  1、分页速度一般维持在1秒和3秒之间。
  2、在查询最后一页时,速度一般为5秒至8秒,哪怕分页总数只有3页或30万页。
  虽然在超大容量情况下,这个分页的实现过程是很快的,但在分前几页时,这个1-3秒的速度比起第一种甚至没有经过优化的分页方法速度还要慢,借用户的话说就是“还没有ACCESS数据库速度快”,这个认识足以导致用户放弃使用您开发的系统。
  笔者就此分析了一下,原来产生这种现象的症结是如此的简单,但又如此的重要:排序的字段不是聚集索引!
  本篇文章的题目是:“查询优化及分页算法方案”。笔者只所以把“查询优化”和“分页算法”这两个联系不是很大的论题放在一起,就是因为二者都需要一个非常重要的东西――聚集索引。
  在前面的讨论中我们已经提到了,聚集索引有两个最大的优势:
  1、以最快的速度缩小查询范围。
  2、以最快的速度进行字段排序。
  第1条多用在查询优化时,而第2条多用在进行分页时的数据排序。
  而聚集索引在每个表内又只能建立一个,这使得聚集索引显得更加的重要。聚集索引的挑选可以说是实现“查询优化”和“高效分页”的最关键因素。
  但要既使聚集索引列既符合查询列的需要,又符合排序列的需要,这通常是一个矛盾。笔者前面“索引”的讨论中,将fariqi,即用户发文日期作为了聚集索引的起始列,日期的精确度为“日”。这种作法的优点,前面已经提到了,在进行划时间段的快速查询中,比用ID主键列有很大的优势。
  但在分页时,由于这个聚集索引列存在着重复记录,所以无法使用max或min来最为分页的参照物,进而无法实现更为高效的排序。而如果将ID主键列作为聚集索引,那么聚集索引除了用以排序之外,没有任何用处,实际上是浪费了聚集索引这个宝贵的资源。
  为解决这个矛盾,笔者后来又添加了一个日期列,其默认值为getdate()。用户在写入记录时,这个列自动写入当时的时间,时间精确到毫秒。即使这样,为了避免可能性很小的重合,还要在此列上创建UNIQUE约束。将此日期列作为聚集索引列。
  有了这个时间型聚集索引列之后,用户就既可以用这个列查找用户在插入数据时的某个时间段的查询,又可以作为唯一列来实现max或min,成为分页算法的参照物。
  经过这样的优化,笔者发现,无论是大数据量的情况下还是小数据量的情况下,分页速度一般都是几十毫秒,甚至0毫秒。而用日期段缩小范围的查询速度比原来也没有任何迟钝。聚集索引是如此的重要和珍贵,所以笔者总结了一下,一定要将聚集索引建立在:
  1、您最频繁使用的、用以缩小查询范围的字段上;
  2、您最频繁使用的、需要排序的字段上。
   结束语
  本篇文章汇集了笔者近段在使用数据库方面的心得,是在做“办公自动化”系统时实践经验的积累。希望这篇文章不仅能够给大家的工作带来一定的帮助,也希望能让大家能够体会到分析问题的方法;最重要的是,希望这篇文章能够抛砖引玉,掀起大家的学习和讨论的兴趣,以共同促进,共同为公安科技强警事业和金盾工程做出自己最大的努力。
  最后需要说明的是,在试验中,我发现用户在进行大数据量查询的时候,对数据库速度影响最大的不是内存大小,而是CPU。在我的P4 2.4机器上试验的时候,查看“资源管理器”,CPU经常出现持续到100%的现象,而内存用量却并没有改变或者说没有大的改变。即使在我们的HP ML 350 G3服务器上试验时,CPU峰值也能达到90%,一般持续在70%左右。
  本文的试验数据都是来自我们的HP ML 350服务器。服务器配置:双Inter Xeon 超线程 CPU 2.4G,内存1G,操作系统Windows Server 2003 Enterprise Edition,数据库SQL Server 2000 SP3
  (完)

本文转自
http://www.vckbase.com/document/viewdoc/?id=1310
迷你SQL2000 v1.2.9 个人修改版 迷你SQL2000 数据库 v1.2.9 个人修改版, SQL FOR WIN10,win7,64位或32位 个人版,带使用说明 可以在WIN7,WIN10 64位或32位下完美使用, 估计好多 人不知道这个软件,就是不需要安装MSDE不需要安装SQL2000, 就可以一秒具有SQL数据库环境,简单携带!!! 稳定使用用友、速达、金蝶等大中小软件所需SQL, 随带随走! 还是不知道是什么东西的,自己下载下来 看看就明白了,已安装了SQL也不影响,最高可以在同 一台电脑上安装99个SQL环境。 独立环境,跟你已安装 的SQL版本没有任何冲突,所有文件包括企业管理器都 是一个文件夹搞定,无需繁琐的操作,没见过的自己下 载下来看看就知道喽!! 现在很多软件都已经开始集 成它了!对了,没有任何功能和时间限制! 立即下载

相关推荐

从性能的角度谈SQL Server聚集索引键的选择

简介   在SQL Server中,数据是按页进行存放的。而为表加上聚集索引后,SQL Server对于数据的查找是按照聚集索引的列作为关键字进行了。因此对于聚集索引的选择对性能的影响变得十分重要了。本文从旨在从性能的角度来谈聚集索引的选择,但这仅仅是从性能方面考虑。对于有特殊业务要求的表,则需要按实际情况进行选择。   聚集索引所在的列或列的组合好是的   这个原因需要从数据的存放原理来谈。在SQL Server中,数据的存放方式并不是以行(Row)为单位,而是以页为单位。因此,在查找数据时,SQL Server查找的小单位实际上是页。也是说即使你只查找一行很小的数据,SQL Serv

聚集索引、非聚集索引、唯一索引、非唯一索引_简单明了快速理解(理论原理)

天天搞数据,聚集索引非聚集索引,唯一索引,非唯一索引,天天见但不理解,网上也找不到几个能说囫囵的。今天处理数据库问题时被老大教育一番,然后给我普及了一数据库索引的知识。 聚集索引 聚集索引的作用对象是一张表数据的物理地址,聚集索引使得数据按照物理地址顺序的存储在存储介质中,数据的物理地址也是连续的,因此聚集索引是查询速度最快的索引,其查询原理是二分法。 聚集索引尽量建立在值不会发生变更的列上...

AI量化交易实验室 8956

手把手教你用AD9834 DDS模块DIY一个可调信号源(附AD原理图/PCB/程序)

本文详细介绍了如何使用AD9834 DDS模块DIY一个高精度可调信号源,涵盖硬件搭建、原理图解读、PCB优化和程序烧录等关键步骤。通过STM32控制实现0-10MHz频率范围输出,特别适合电子设计与射频实验,提供完整的AD原理图、PCB设计和程序代码参考。

weixin_31854867的博客 406

sql server 索引详细介绍

在选择索引键时,尽可能采用小数据类型的列作为键以使每个索引页能容纳尽可能多的索引键和指针,通过这种方式,可使一个查询必需遍历的索引页面降低到最小,此外,尽可能的使用整数做为键值,因为整数的访问速度最快。OFF 或 fillfactor 未指定,考虑到中间级页上的键集,将中间级页填充到接近其容量的程度,以留出足够的空间,使之至少能够容纳索引的最大的一行。视图的聚集索引必须唯一。索引分为聚集索引和非聚集索引,数据库中的索引类似于一本书的目录,在一本书中通过目录可以快速找到你想要的信息,而不需要读完全书。

2301_79082949的博客 1603

使用buildroot系统的qmake编译QT出现Unknown module(s) in QT: xxxx 的错误解决方法

可以看到,我这里使用的是 qt5base-5.15.2 目录下的qmake,这个qmake只包含了基础的qt模块,而额外添加的qt模块没有包含进去,需要使用。可以看到我这里是有的,如果你跟我一样,模块存在,但是还是报找不到对应模块的错误的话,大概率是跟我一样,用错qmake了,看第二点。在包含 qt5base 目录下查看,是否有对应模块的目录,如果没有的话,需要通过make menuconfig 添加一下。目录下的qmake才可以。

T541132的博客 2489

【文献阅读笔记】之基于注意力机制的深度学习路面裂缝检测

中文,计算机辅助设计与图形学学报,第 32 卷 第 8 期,2020 年 8 月。 DOI: 10.3724/SP.J.1089.2020.18059 摘要: 为实现自动准确地检测路面裂缝, 提升路面裂缝检测效果, 提出了一种基于注意力机制的裂缝检测网络 (attention-based crack networks, ACNet). 该网络采用编码器-解码器网络构架, 编码器采用 ResNet34 为骨干网, 提取路面裂缝特征; 在编码器和解码器间加入基于注意力机制的特征模块(attention-b

qq_44785998的博客 7592

SQL 错误 823 I/O error (bad page ID) detected during read【修复方法】

今天一个数据库损坏了,不管对 该表 查询、修改、添加 都会出错, 错误信息如下:     I/O error (bad page ID) detected during read at offset 0x0000000171a000 in file “路径\文件”

缘起§缘灭 7239

CentOS 7 安装 Python 3.10

我这里已经软链接了,正常未链接之前是python->python2.7而不是python3.10。python2.7默认安装是在 /usr/bin目录中,切换到/usr/bin/更改yum配置,因为其要用到python2才能执行,否则会导致yum不能正常使用。2. 安装 Python 3.10 必需的 openssl >= 1.1.1。默认的centos7是没有安装pip,先添加epel扩展源。/usr/bin/python 修改为如下。添加软链接,将原来的链接备份。添加python3的软链接。

bensonyang888的博客 2904

什么是聚集索引和非聚集索引?

聚集索引是将数据表中的行按照索引键的顺序进行物理排序的索引。一个表只能有一个聚集索引,因为数据表的物理存储顺序只能有一种。聚集索引的索引键决定了数据在表中的存储顺序。非聚集索引是将索引键和指向数据行的指针存储在索引页中的索引。一个表可以有多个非聚集索引,因为非聚集索引不影响数据表的物理存储顺序。非聚集索引的索引键决定了索引页的排序顺序。

网络技术联盟站 6449

RAG——从0到1快速搭建RAG应用

本文介绍了基于LangChain框架构建RAG(检索增强生成)应用的技术方案,涵盖核心模块选型与实现流程。技术栈包括:LangChain应用框架、pypdf文档解析、RecursiveCharacterTextSplitter文本分块、bge-small-zh-v1.5向量模型、Faiss向量库和通义千问大模型。文章详细说明了开发环境配置步骤,包括虚拟环境创建、依赖库安装和模型下载。核心代码分为索引、检索、生成三大流程,索引流程完成PDF文档解析、分块和向量化存储;检索流程实现查询向量化和相似度匹配;生成流

小志的博客 589

L型探测器几何畸变矫正

定位像素空间位置 -> 计算水平面投影点 -> 统一物理分辨率 -> 重采样生成新图。

如果想成为中心,那么就到中心去吧。 239

SQL sever中的索引

SQL sever中的索引

m0_71406734的博客 6801

YOLO26涨点改进 | 全网独家创新!注意力改进篇 | CVPR 2025 | 引入RALA秩增强线性注意力模块,含多种创新改进,助力YOLO26适合目标检测、图像分割、图像分类有效涨点

🔥本文给大家介绍使用RALA模块改进YOLO26可以显著提升其性能,尤其在复杂场景和小物体检测中。通过增强线性注意力机制的矩阵秩,RALA改善了模型对空间信息的建模能力,提升了特征的多样性和全局信息的融合,进而提高了检测精度。同时,RALA保持了线性复杂度,避免了Softmax注意力的高计算成本,使YOLO26在实时检测任务中既能保持高效计算,又能提高检测精度,尤其是在小物体和遮挡物体的检测中表现突出。🔥欢迎订阅我的专栏、带你学习使用最新-最前沿-独家YOLO26创新改进!

Ai缝合怪、助力小伙伴高效发论文 138

SQL Server 索引结构及其使用(四

SQL Server 索引结构及其使用(四)作者:freedk一、深入浅出理解索引结构二、改善SQL语句三、实现小数据量和海量数据的通用分页显示存储过程聚集索引的重要性和如何选择聚集索引  在上一节的标题中,笔者写的是:实现小数据量和海量数据的通用分页显示存储过程。这是因为在将本存储过程应用于“办公自动化”系统的实践中时,笔者发现这第三种存储过程在小数据量的情况下,有如下现象:1、分页速...

166

手把手教你搭建工业级C#上位机:完整架构+通信+配置+日志,新手也能落地(附全套源码)

模型层是“数据容器”,统一数据格式,避免参数传递混乱。本文搭建的C#上位机,采用“分层+模块化”架构,解耦了UI、通信、配置、日志四大核心功能,不仅满足工业场景的基础需求,还为后续扩展打下基础。新手跟着步骤走,既能掌握上位机的核心开发技能,又能理解工业级项目的架构设计思路。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1152

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

SQL Server 索引结构及其使用(四)[转]

SQL Server 索引结构及其使用(四)作者:freedk 一、深入浅出理解索引结构二、改善SQL语句三、实现小数据量和海量数据的通用分页显示存储过程 聚集索引的重要性和如何选择聚集索引  在上一节的标题中,笔者写的是:实现小数据量和海量数据的通用分页显示存储过程。这是因为在将本存储过程应用于“办公自动化”系统的实践中时,笔者发现这第三种存储过程在小数据量的情况下,有如下现象:1...

dengliao6082的博客 64

lwip-2.0.3

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

上一篇: SQL Server 索引结构及其使用(二)
下一篇: SQL Server 索引结构及其使用(三)
linqingfeng
博客等级 码龄21年 69粉丝 140原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值