说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

请问在两个字段中的组合查询,什么方式查询最快?

编辑:说三道四文库 发布时间:2017-03-23 04:38
HTML文档下载 WORD文档下载 PDF文档下载
请问在两个字段中的组合查询,什么方式查询最快?(SQL Server2000),定义索引的种类的区别呢?(30万条记录中),字段类型用Char、VarChar或Int哪一种更好?
请高手指教?
请高手指教? 
请高手指教? 
INT类型!
请高手指教? 
高手指教?  
都差不多
看看下面的文章也许对你有帮助!

Sybase SQL Server索引的使用和优化

--------------------------------------------------------------------------------
  在应用系统中,尤其在联机事务处理系统中,对数据查询及处理速度已成为衡 量应用系统成败的标准。而采用索引来加快数据处理速度也成为广大数据库用户所 接受的优化方法。 

  在良好的数据库设计基础上,能有效地使用索引是SQL Server取得高性能的基础,SQL Server采用基于代价的优化模型,它对每一个提交的有关表的查询,决定是否使用索引或用哪一个索引。因为查询执行的大部分开销是磁盘I/O,使用索引提高性能的一个主要目标是避免全表扫描,因为全表扫描需要从磁盘上读表的每一个数据页,如果有索引指向数据值,则查询只需读几次磁盘就可以了。所以如果建立了合理的索引,优化器就能利用索引加速数据的查询过程。但是,索引并不总是提高系统的性能,在增、删、改操作中索引的存在会增加一定的工作量,因此,在适当的地方增加适当的索引并从不合理的地方删除次优的索引,将有助于优化那些性能较差的SQL Server应用。实践表明,合理的索引设计是建立在对各种查询的分析和预测上的,只有正确地使索引与程序结合起来,才能产生最佳的优化方 案。本文就SQL Server索引的性能问题进行了一些分析和实践。

  一、聚簇索引(clustered indexes)的使用

  聚簇索引是一种对磁盘上实际数据重新组织以按指定的一个或多个列的值排序。由于聚簇索引的索引页面指针指向数据页面,所以使用聚簇索引查找数据几乎总是比使用非聚簇索引快。每张表只能建一个聚簇索引,并且建聚簇索引需要至少相当该表120%的附加空间,以存放该表的副本和索引中间页。建立聚簇索引的思想是:

  1、 大多数表都应该有聚簇索引或使用分区来降低对表尾页的竞争,在一个高事务的环境中,对最后一页的封锁严重影响系统的吞吐量。

  2、 在聚簇索引下,数据在物理上按顺序排在数据页上,重复值也排在一起,因而在那些包含范围检查(between、<、<=、>、>=)或使用group by或order by的查询时,一旦找到具有范围中第一个键值的行,具有后续索引值的行保证物理上毗连在一起而不必进一步搜索,避免了大范围扫描,可以大大提高查询速度。

  3、 在一个频繁发生插入操作的表上建立聚簇索引时,不要建在具有单调上升值的列(如IDENTITY)上,否则会经常引起封锁冲突。

  4、 在聚簇索引中不要包含经常修改的列,因为码值修改后,数据行必须移动到新的位置。

  5、 选择聚簇索引应基于where子句和连接操作的类型。聚簇索引的侯选列是:

  ● 主键列,该列在where子句中使用并且插入是随机的。

  ● 按范围存取的列,如pri_order > 100 and pri_order < 200 。

  ● 在group by或order by中使用的列。

  ● 不经常修改的列。

  ● 在连接操作中使用的列。

  二、非聚簇索引(nonclustered indexes)的使用

  SQL Server缺省情况下建立的索引是非聚簇索引,由于非聚簇索引不重新组织表中的数据,而是对每一行存储索引列值并用一个指针指向数据所在的页面。换句话说非聚簇索引具有在索引结构和数据本身之间的一个额外级。一个表如果没有聚簇索引时,可有250个非聚簇索引。每个非聚簇索引提供访问数据的不同排序顺序。在建立非聚簇索引时,要权衡索引对查询速度的加快与降低修改速度之间的利弊。另外,还要考虑这些问题:

  ● 索引需要使用多少空间。

  ● 合适的列是否稳定。

  ● 索引键是如何选择的,扫描效果是否更佳。

  ● 是否有许多重复值。

  对更新频繁的表来说,表上的非聚簇索引比聚簇索引和根本没有索引需要更多的额外开销。对移到新页的每一行而言,指向该数据的每个非聚簇索引的页级行也必须更新,有时可能还需要索引页的分理。从一个页面删除数据的进程也会有类似的开销,另外,删除进程还必须把数据移到页面上部,以保证数据的连续性。所以,建立非聚簇索引要非常慎重。非聚簇索引常被用在以下情况: 

  ● 某列常用于集合函数(如Sum,....)。

  ● 某列常用于join,order by,group by。

  ● 查寻出的数据不超过表中数据量的20%。

  三、覆盖索引(covering indexes)的使用

  覆盖索引是指那些索引项中包含查寻所需要的全部信息的非聚簇索引,这 种索引之所以比较快也正是因为索引页中包含了查寻所必须的数据,不需去访 问数据页。 如果非聚簇索引中包含结果数据,那么它的查询速度将快于聚簇索引。

  但是由于覆盖索引的索引项比较多,要占用比较大的空间。而且update 操 作会引起索引值改变。所以如果潜在的覆盖查询并不常用或不太关键,则覆盖索引的增加反而会降低性能。

  四、索引的选择技术

  p_detail是住房公积金管理系统中记录个人明细的表,有890000行,观察在不同索引下的查询运行效果,测试在C/S环境下进行,客户机是IBM PII350(内存64M),服务器是DEC Alpha1000A(内存128M),数据库为SYBASE11.0.3。

  1、 select count(*) from p_detail where op_date>’19990101’ and op_date<’19991231’ and pri_surplus1>300 

  2、 select count(*),sum(pri_surplus1) from p_detail where op_date>’19990101’ and pay_month between ‘199908’ and ’199912’

  不建任何索引 查询1 1分15秒

  查询2 1分7秒

  在op_date上建非聚簇索引 查询1 57秒

  查询2 57秒

  在op_date上建聚簇索引 查询1 <1秒

  查询2 52秒

  在pay_month、op_date、pri_surplus1上建索引 查询1 34秒

  查询2 <1秒

  在op_date、pay_month、pri_surplus1上建索引 查询1 <1秒

  查询2 <1秒

  从以上查询效果分析,索引的有无,建立方式的不同将会导致不同的查询效果,选择什么样的索引基于用户对数据的查询条件,这些条件体现于where从句和join表达式中。一般来说建立索引的思路是:

  (1)、主键时常作为where子句的条件,应在表的主键列上建立聚簇索引,尤其当经常用它作为连接的时候。

  (2)、有大量重复值且经常有范围查询和排序、分组发生的列,或者非常频繁地被访问的列,可考虑建立聚簇索引。

  (3)、经常同时存取多列,且每列都含有重复值可考虑建立复合索引来覆盖一个或一组查询,并把查询引用最频繁的列作为前导列,如果可能尽量使关键查询形成覆盖查询。

  (4)、如果知道索引键的所有值都是唯一的,那么确保把索引定义成唯一索引。

  (5)、在一个经常做插入操作的表上建索引时,使用fillfactor(填充因子)来减少页分裂,同时提高并发度降低死锁的发生。如果在只读表上建索引,则可以把fillfactor置为100。

  (6)、在选择索引键时,设法选择那些采用小数据类型的列作为键以使每个索引页能够容纳尽可能多的索引键和指针,通过这种方式,可使一个查询必须遍历的索引页面降到最小。此外,尽可能地使用整数为键值,因为它能够提供比任何数据类型都快的访问速度。

  五、索引的维护

  上面讲到,某些不合适的索引影响到SQL Server的性能,随着应用系统的运行,数据不断地发生变化,当数据变化达到某一个程度时将 会影响到索引的使用。这时 需要用户自己来维护索引。索引的维护包括:

  1、重建索引

  随着数据行的插入、删除和数据页的分裂,有些索引页可能只包含几页数据,另外应用在执行大块I/O的时候,重建非聚簇索引可以降低分片,维护大块I/O的效率。重建索引实际上是重新组织B-树空间。在下面情况下需要重建索引:

  (1)、数据和使用模式大幅度变化。

  (2)、排序的顺序发生改变。

  (3)、要进行大量插入操作或已经完成。

  (4)、使用大块I/O的查询的磁盘读次数比预料的要多。

  (5)、由于大量数据修改,使得数据页和索引页没有充分使用而导致空间的使用超出估算。

  (6)、dbcc检查出索引有问题。

  当重建聚簇索引时,这张表的所有非聚簇索引将被重

  建.

  2、索引统计信息的更新

  当在一个包含数据的表上创建索引的时候,SQL Server会创建分布数据页来存放有关索引的两种统计信息:分布表和密度表。优化器利用这个页来判断该索引对某个特定查询是否有用。但这个统计信息并不动态地重新计算。这意味着,当表的数据改变之后,统计信息有可能是过时的,从而影响优化器追求最有工作的目标。因此,在下面情况下应该运行update statistics命令:

  (1)、数据行的插入和删除修改了数据的分布。

  (2)、对用truncate table删除数据的表上增加数据行。

  (3)、修改索引列的值。

  六、结束语

  实践表明,不恰当的索引不但于事无补,反而会降低系统的执行性能。因为大量的索引在插入、修改和删除操作时比没有索引花费更多的系统时间。例如下面情况下建立的索引是不恰当的:

  ● 在查询中很少或从不引用的列不会受益于索引,因为索引很少或从来不必搜索基于这些列的行。

  ● 只有两个或三个值的列,如男性和女性(是或否),从不会从索引中得到好处。

  另外,鉴于索引加快了查询速度,但减慢了数据更新速度的特点。可通过在一个段上建表,而在另一个段上建其非聚簇索引,而这两段分别在单独的物理设备上来改善操作性能。
CMDN Club 27期:从儿童音乐教育到移动碎片化管理 聚焦全球移动市场——你所不知道的俄罗斯 MemSQL:号称世界上最快的内存-关系型数据库 兼容MySQL但快30倍 PC衰落 Intel转投Google挖掘移动市场潜力 移动周报:500元体感、精确到0.01毫米的Leap Motion TUP第29期:王淮、龚世海谈如何打造优秀的技术团队 一网打尽13款开源Java大数据工具,从理论到实践的剖析 从用户体验的善与恶说起,做用户爱“玩”的教育应用 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi “BlackBerry 10移动应用开发大赛”应用推荐 Java程序优化的一些最佳实践 Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具 Anchora鲁为民:PaaS是我的兴趣 次世代IDE Light Table 0.4发布 带来众多更新和改进 别再设计易碎的Web API! LinkedIn:55人支持2700位员工,2亿用户的大数据分析 Brian Krzanich是谁?这位新CEO预示英特尔未来怎样? HTML5开发者心声:浏览器兼容性成最大问题 传微软6月下旬将发布第二代Surface 7到9英寸全有 Turbulenz:HTML5 2D和3D游戏引擎开源 携程开放平台总经理夏天:内容+高转化率成就开发者 直接拿来用!最火的Android开源项目(一) Qunar 谌振宇:旅游行业的移动化如何布局? 大数据分析“铁三角”: Teradata数据仓库、Teradata Aster与Hadoop Teradata专业服务:打造行业企业的“数据科学家” Xamarin Evolve 2013:竭尽全力让C#服务iOS与Android 史上最全!57个Web框架4轮横向对比 回顾银行数据的可用性和一致性历史 Qubole:托管在AWS平台上的Hive服务 自由操作系统 Debian 正式发布7.0版本 4月份浏览器份额:IE 8仍居第一,IE 10翻番 Sybase数据库设备存放的地方? 高分救助:300分 一個通用的聯結sql server不能運行,help me 请大虾帮忙!这个SQL语句怎么写?多谢! 求教如何将enter转换为tab? win98下如何使用命令行方式共享文件夹 请问一个关于Iterator的问题. 我想把Access数据库里的内容只保留 1 天,超过 1 天的数据自动被删掉,请问该怎样设置。 拷贝构造函数实现多态性?!!你知道吗?........... 有多少人喜欢CCTV的张越和王小丫? 请问DES的最短代码的长度是多少?急急急,多多送分! 一个关于FlexGrid与MSChart的问题 请问有没有办法把一个报表导到一个Excel中? 数据管道对象....my_pipe.dataobject="p_pipe"(已经建好的数据管道对象)为什么提示 空对象?? 好象无法调用一个动态嵌入式框架中的函数 zhq2000(俗子) 谢谢你帮忙!我还有些不明白的地方想请教一下! cmos 如何下载JDK1.3版? 在DBGrid怎样移动一行数据?高分赠送 这个问题很奇怪!关于弹出菜单。 为什么 Rs->GetFieldValue 取两个字段的时候出错,只能一次去一个字段么? 用C#如何实现在form上画一条曲线,然后用鼠标托动曲线上的某一个点,该曲线的弧度根据鼠标的移动而变化 如何选择一行数据,条件是该数据的date类型的列为空(oracle)? 强烈建议!!!! 用过MSComm的朋友看过来。 清详细介绍ActiveX 请教众英雄: 怎么用C#写一个ComboBox Web Control 谢了!to anybody1 中国共享软件注册中心的2002年2月份汇款为什么现在还没到? 请问用DELPHI的ADO挂接的VFP数据库,进行删除只能是加删除标记,如何应DELPHI彻底删? 为什么 Rs->GetFieldValue 取两个字段的时候出错,只能一次去一个字段么? 请问用DELPHI的ADO挂接的VFP数据库,进行删除只能是加删除标记,如何应DELPHI彻底删? 怎样在weblogic5.1下建虚拟主机 ?xml+xsl=fo? 百分求解!!!!!!(给个思路也好呀) 请问哪儿有好一点的免费计数器? to cobi(我是小新),txinfo(冰炎两重天) 两位高的在吗? 如何将mpeg文件中的某一帧保存为BMP文件? asp中加入了一个组件,但是用到一些属性、方法时会出错,而且相当慢,怎么会事 共享软件为什么要收钱? 怎样编程控制Memo控件滚动到最底下? 寻找可以在局域网内代理QQ的软件,谢谢!!!!!! 我下载了一个控件叫XPMenu.pas的菜单资源文件,我不清楚如何使用才能使用这种没有具体图形的原代码? 谁可以提供将autocad2000的.dwg或.dxf格式转换到.mif格式的软件~~~~~~~~~ 请问qq是delphi还是vc做的? 网络协议方面的编程,我该学Visual C++还是Visual C#.net? 如何用LotusScript创建一个表单?(进者有分!!!) exchange的测试问题 请大家帮个忙,到哪里可以找到关于http,FTP协议的资料 请问为什么在Debug编译好的Dll,Release版就会报错? 怎么这个问题没人回答,在线等待,一定给分 镁和稀硝酸反应,生成硝酸镁、硝酸铵和水.是氧化还原反应吗?为什么? One day the wind said to the sun,“Look at that man walking along the road.I can get his cloak off more quickly than you can.” “We will see about that,” said the sun.“I will let you try first.” So the wind tried to make the man take off hi 什么是三线态 .哪位有最新版的李阳5分钟突破高中英语2010的录音请发到wangchao_2008305@126.com 谢谢 硫酸根的化合价Co4(硫酸根)的化合价为-2价,那硫酸根中的C元素和氧元素的化合物是多少? 三线态,单线态,和多重态的详细概念 以石墨棒作正电极,电解氯化铜溶液,若电解是转移的电子数是6.02*10^23,则此时在阴极析出的铜的质量是?如何从电子的数量计算到物质的量?要具体步骤,不要只一个答案给我. 青阳根硝酸根,硫酸根,碳酸根氨根原子团的符号和化合价 单线态氧有关活化 以石墨为电极,电解氯化铜水溶液,阴极的产物是铜?以石墨为电极,电解氯化铜水溶液,阴极的产物是铜 英语翻译 什么是单线态氧?再加一个:单线态氧和三线态氧的区别? 已知电极材料:铁、铜、银、石墨、锌、铝;电解质溶液:CuCl2溶液、Fe(SO4)3溶液、盐酸.回答问题:若电极材料选铜和石墨,电解质溶液选硫酸铁溶液,外加导线,能否构成原电池————( 日常生活中含碱性较多的食物有哪些? 硝酸铵溶于水后温度降低的原因 硝酸铵在不同条件下分解可以得到不同的产物,下列各组物质中肯定不可能是硝酸铵分解产物的是A.N2O、H2O B.N2、O2、H2O C.N2、HNO3、H2O D.NH3、NO、H2 ( D ) D中为什么不可以负三价的N,一部分 日常生活中含碱性的食物有哪些? 硝酸铵放入水中,所得溶液温度降低的原因 食盐、硝酸铵、氢氧化钠中哪种物质在水中溶解后能够使气球鼓起来 高一生物必修2总结归纳(详)人教版.麻烦大家了.必修一也行。 硝酸铵放入水中,所得溶液温度显著降低的原因是 硝酸铵溶解于水,溶液温度降低,说明该物质溶解时只有扩散吸热过程 高一生物必修一总结 物体三态变化的原因(用分子解释)主要是因为分子间间隔变小还是因为分子间引力变大?或者是其他的?请说出最主要的原因 怎样使硝酸铵快速的溶解在水中 高一生物必修三总结谢谢了! 麻烦用分子知识解释物质的三态变化 生物必修一物质的跨膜运输一道题,求解释.将不同植物的三个未发生质壁分离的细胞置于同一蔗糖溶液中,形态不再变化后的细胞图如下,则有关各细胞液的浓度判断正确的是 含铜含锡的环保泥,怎样分离这两种金属,含铜含锡的环保泥,估计是用石灰沉淀下来的.怎样才能把它们分开,我做实验,加硫酸浸铜,锡也跟着跑.烦死了,谁懂技术,来帮我做. 用分子或原子解释物质的三态变化 施什么肥能让甘蔗重量大些 氧离子,氯离子,硝酸根,碳酸根,氢氧根,硫酸根,亚硫酸根,碳酸氢根,磷酸根与铵离子,亚铁离子(连接问题):铁离子,铜离子,铝离子,钙离子,镁离子,锌离子组成的化学式和名称 物质的三态变化的定义就是例如固化是什么变成什么 液化 升华 气化 凝华 融化 凝固 构成甘蔗的结构和功能单位是 看了您在百度回答网友的问题比较好,我想请教您一下在稀硫酸中溶液中混合有铜,铅,锌,锡怎么样分离补充一下,溶液中的铜和锌都是以硫酸铜和硫酸锌的形式存在,要怎么样把溶液中的锡形成 由分子构成的物质发生三态变化时,分子也发生变化,对吗?急,在线等 高中化学中有什么物质是粉末状的 今年甘蔗为什么 贵 高中生物必修1的内容.说出所有大章节及小节名称即可. 高中化学中常考的淡黄色物质有哪些不只两个吧?我记得参考书上五六个呢。。。。 给得越多越好。。当然要准确的,PS:百科上说氮化镁是微黄色的。。姑且算淡黄色的吧 甘蔗无氧呼吸产生什么? 帮忙排一下这些内容的顺序被基因对性状的控制 基因重组和基因突变 DNA是主要的遗传物质 基因的表达 从杂交育种到基因工程 DNA的结构和复制 染色体变异 减数分裂 分离定律 自由组合定律 1.某信使RNA的碱基中,尿嘧啶占20% ,腺嘧啶占10%,这作为它的模板的DNA分子中胞嘧啶占全部碱基的百分比是多少?2.DNA分子中一条链的A+G/C+T=0.4,则以这条连的互补链为模板,转录成的RNA中A+G/C+U的值 若光合作用过程的暗反应速率大于呼吸作用速率,则甘蔗的干重就会增加.为什么不对 高中生物必修2内容概括下 大家 某二倍体动物的某细胞内含10条染色体,10个DNA分子,且细胞膜开缢缩,则该细胞 ( ) A.处于有丝分裂中期 B.正在发生基因自由组合 C.将形成配子 D.正在发生DNA复制 如何才能把附在铜表面上的金属锡去除?求怎样用化学试剂才能把附在铜表面的锡去除呢? 求如何遏制全球气候变暖的论文如何遏制?是要方法 银戒指和白金戒指怎样去区别和分别啊! 如何去除锡里的铜一块锡锭,含铜量大约10%/锡90%请问如何将铜提取出来? 全球气候变暖的英语文章初中水平要参加一个比赛,有急用,越快越好,要演讲,限时90秒 黄金含银怎么分离我们家乡的山上产黄金含银很重请问有什么简单又直接的方法提纯(把银分离出来)听说过一个方法叫(拉银),但不知道具体怎样操作 有一块金属,小名说:“是铁不是锡.”小冰说:“不是铁是铜.”小晶说:“不是铁不是铜,是锡.”续:老师说:“3人判断中错误的判断>正确的判断.”这是什么金属?(快2天内) 全球气候变暖论文要求有参考文献!一段关于全球气候变暖的文字.然后要求要说明这段文字的出处,作者的名字======回答的好可以追加50分! 红色石蕊试纸和蓝色石蕊试纸有什么区别红色石蕊试纸和蓝色石蕊试纸还有紫色石蕊试纸有什么区别? 高中英语作文:关于联合国环境组织考察某市环境污染情况领导来到我校.我向他们说:我校在山脚下,一条小河从旁边流过.两年前,学校南面建了一座工厂,排出废气,废水,造成严重污染.现在 内能和化学能的转换不太懂为什么内能转换为化学能一定要吸热,不能放热呢?如果有例子更好! 镁和硝酸反应为什么生成硝酸铵谢谢咯/.. 锌+铜+碳=锌铜合金的化学方程式 为什么单线态的能量高于三线态
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘