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

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

编辑:说三道四文库 发布时间:2017-01-21 02:29
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)、修改索引列的值。

  六、结束语

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

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

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

  另外,鉴于索引加快了查询速度,但减慢了数据更新速度的特点。可通过在一个段上建表,而在另一个段上建其非聚簇索引,而这两段分别在单独的物理设备上来改善操作性能。
Netflix开源S3一致性提升利器S3mper Fi 《近匠》第06期:UCloud——目标!完整云服务 小三上位:Windows Phone不容忽视的契机 “详解Visual Studio 2013”全国巡讲北京站:无忧开发iOS及Android应用 Chrome最新版:快速静音及在Win8中建Chrome OS系统 雅虎COO Henrique de Castro因业绩不佳被解雇 分析比特币背后的数据算法,抢占背后巨大市场先机 美食菜谱将会成创业风口的两大理由 Windows XP杀毒软件更新 将被延至2015年7月 小心,商家已经盯上你了 一软一硬 让你时刻保持清醒的可穿戴产品 寓教于乐 贝瓦依托移动平台打造中国式儿童“轻教育” 中科创达:CES2014上的中国红 SA:2014年移动互联网十大技术创新预测 回顾2013:HBase的提升与挑战 Google打造云中Hadoop便捷版,强势对抗AWS 【信息图】专业Web设计师和业余设计师的发展状况并不协调 先试后买:Agawi推新型广告服务AppGlimpse 搜狗CEO王小川:“硬件免费”是误区 平均比Hive快24倍,Impala剑指Stinger 利用ElasticSearch和Redis检索和存储十亿信息 微软高管再度失血 媒体及娱乐副总裁因内部重组离职 Google研制智能隐形眼镜 帮助病人监测血糖指标 盘点2013:最优秀的HTML5&amp;CSS3设计【多图】 AMD:未来PC将同时搭载Android、Windows双系统 如果你是CEO,你打算给自己开多少工资? IBM X6架构中国首发,目标是云与大数据 Pivotal聘用eBay前副总裁,继续发力云计算市场 智能手机的功能越来越复杂,可惜用户不买账 一周消息树:Windows 9要来了,会有哪些改变? 简单几步解决IE11无法显示此页的问题 大家帮忙啊... 关于 int[][][] a = new int[3][3][3] 再问clavy(有巢无车氏) 和 wqxtt(wqxtt) 关于WINCE 下ACCESS 与 WINDOWS 下ACCESS 的转换 关于C/S结构的问题?快帮我啊!!! 各位programer加班有加班工资吗? 代理服务器的原理?——有谁知道! 请问怎么在一个对话框程序的文本框中绘图 请问windows网络程序PING编程技术里的几个问题,ICMP回显里面的timestamp是怎么纪录进去的 什么地方可以Down rose?或谁寄给我一个? 编写一个函数,通过指针连接两个字符串!!!!!!!!!!!! 用applet怎样打开一个文件吗? 请问哪种ORB产品实现了com服务器/corba客户机的桥 我读《深入探索C++对象模型》的感受,cber能再回答我一次么? 谁有DELPHI的有关网络编程方面的资料?给我一份可以吗? 关于stringgrid的问题????? 痛苦啊,难道要放弃BCB吗? 大家认为在开发过程中是否不能用全局变量? 如何让LINUX支持我显卡 高手,谁来帮我一下~! 取字符 在SDK中,如何获得客户区的宽度和高度呢??(哪两个函数呢?) 哪里有ATL的电子书下载?最好是中文的! 高手谁能帮帮我呀~~~~~~~! 请教:如何在statusbar的panel中显示一个图标呢? VC++中如何使用OLE对象? 初来乍到,发现这儿JJMM还挺多的。。。 请高人指教~! CSDN中碰到这种问题,该如何解决呢? 如何学习director 你能帮我一下吗?~ 企业商务管理软件,开放全部的源代码及开发文档! 企业管理软件,全套源码及开发文档!!!! 哪里有支持任何波特率的通讯控件下载? net_lover(孟子E章)请进~! 一个有关CWebBrowser的问题,急急急!!! 这样的语句为什么不可以实现一次删除多条记录 plmm是什么意思? 各位大侠,知道哪儿有直接可用的上传文件的控件吗? 多谢了!!! 论坛的题目是不是太没意思了 一个sqlserver7统计的问题?? varchar类型不是可以输入255个字符吗,为什么我输了160个就出现'item XXX doesn't pass validation test ' 唉 ~~~~~ 奈何 ~~~~~ 突然想到个荒唐的问题: 事件和过程有什么不同? 奇怪的事前,高手请进来 我的问题还没有解决~! 这里的高手呢,人听多,会的人不多 申奥倒计时,如果你在线,请进来验证这以历史性时刻,谢谢 我有一个用hook截获鼠标移动的dll,但是没有效果,请问怎么调试? 请教,怎样在java中把Button的背景改做一个图片 对delphi5一个自带例题的疑问。 爆炒MM之水园MM ID一览 已知,如图,在三角形abc中,AD,AE分别是三角形ABC的高和角平分线,试问角DAE与角C-角B有怎样的数量关系,说明理由 初二上册数学直角三角形全等的判定,同步练习那一题.已知:如图,在三角形ABC和△A'B'C'中,角ACB=角A'C'B'=90°.,CD,C'D'分别是△ABC和△A'B'C'的中线,且CD=C'D';CE,C'E'分别是△ABC和△A'B'C'的高线,且CE=C'E' 8.4÷﹙2.1×5﹚简便计算 如图,已知,AF分别是两个钝角三角形ABC和三角形ABE的高,如果AD=AF,AC=AE,求证:BC=BE 如图 在三角形abc中,角acb=90°且de是三角形abc的中位线,延长ed到f,使df=ed,连接fc,fb,回答下列问题1..求证:四边形BECF使菱形2.当角A的大小满足什么条件是,菱形BECF使正方形?请回答并证明你的结论 (-510)/(+34)/(-0.125)简便运算大师帮忙~ 已知:如图,AD,AE分别是三角形ABC和三角形ABD的中线.如图,AD,AE分别是三角形ABC和三角形ABD的中线,且BA=BD.求证:AE=二分之一AC. cos(arc sin x/a)等于什么还有反三角函数公式里的一些类似的! 人教版五年级上册数学指导第9页跳一跳0.34×12.5+0.125×66 如图,AD是三角形ABC的中线,AE垂直AC,AF垂直AB,且AE=AC,AF=AB,求证:AD=1/2EF 若a=arc sin(sin3分子4π),则a的值 用梯等式求50*96+57*4+7*66 如图,三角形ABC中,角BAC等于120度,AD垂直BC于D,且AB+BD等于DC,求角C的度数 (arc sin x)/(x)的极限是?x趋于0 57乘66分之23如何简便运算? 已知:如图,在三角形ABC中,AD垂直于BC,垂足为点D,AD^2=BD*DC.求证:三角形ABC是直角三角形.今晚之前给我,最好8:15之前交给我 计算:sin[arc*sin(3/5)+arc*sin(7/18)] 数学题怎么算 /80 = 66 怎么计算 如图,在三角形ABC中,已知角BAC=120度,AD垂直于BC,AB+BD=DC,求∠C的度数. arc sin (25/99)等于多少度啊?谁手边有计算器帮忙按一下下呗 谁给我出题,80道数学题,(简算)和(方程) 如图9,三角形ABC中∠BAC=120°,AD垂直BC于点D,AB+BD=DC求∠C的大小 arc sin(-1/2)=? 给80分 用算除法小风 小玉 小明是幼儿园里最好的朋友 小风体重14KG 正好是小明体重的8分之7 而小明比小玉的重15分之1,小玉体重应该是多少千克 修一条路,第一天修了8分之3,第2天修了第一天 如图 在三角形abc中,bd=dc,∠1=∠2,求证:ad垂直bc. sin ( arc sin л/6 ) =多少?还有一道:arcsin(cos 7л/6) = 1+1.2+1.4+1.6+.+9.6+9.8+10怎简便算法 如图,三角形ABC全等于三角形A'B'C',AD,A'D'分别是三角形ABC,三角形A'B'C'的如图,三角形ABC全等于三角形A'B'C',AD,A'D'分别是三角形ABC,三角形A'B'C'的对应边上的中线.AD与A'D&# ARC sin 0.91ARC( sin 0.91) 是多少的角度啊 用简便算法计算:48×110-4×48-8×48+2×48 在三角形ABC中,AE,AD,AH分别是角平分线、中线、高线,角A=90°的大线关系是? 如图 三角形ABC相似于三角形A'B'C',相似比为k,AD A'D'分别是边BC B'C'上的中线,求证AD比A'D'等于k 5分1比1和3比15可以组成比例对吗 已知三角形ABC中AB=AC,AD和BE是三角形ABC的高,相交点H,且AE=BE求证AH=2BD 如图 在三角形abc中,d是ab上一点,且ad等于cd等于bdde,df分别是角bdc和角adc的平分线,求证:四边形cfde是矩形 0.47*2.5*0.4怎样简便运算 在三角形ABC中,AB=AC,高AD,BE相交于H,且AE=BE,试说明AH=2BD.自己画图 如图,在三角形ABC中,角B=44度,角C=72度,AD是三角形ABC的角平分线.(1)求角BAC的度数;(2)求三角形ADC的度数 0.47*5.9+5.2*4.7-4.7*0.1怎么样简便计算? 在三角形ABC中,AB=AC,AD和BE是高,它们相交于点H,且AE=BE.求AH=2BD在星期6晚上截止,有急用~图自己画吧... 如图,在 三角形ABC中,角C=90度,AD平分角BAC,且角B=3倍的角BAD,求角ADC的度数 63+0.63*2.5+0.63*6.5怎样简便计算, 已知 如图,在三角形abc中,AD,AE分别是三角形ABC的高和角平分线,若角B=30°,角C=50°.【1】求角DAE的度数(已解);【2】试写出角DAE与角C-角B有何关系(证明) 如图,AD为三角形ABC中角BAC的角平分线,DE为三角形ABC的中线.若三角形ABC的面积为24平方厘米,AB=8cm,AC=4cm,则三角形BED的面积为多少?要过程!急! 简便计算185/25-4.5/2.5 AD,AE分别是三角形ABC的高和角平分线,若角B=30度,角C等于50度,求角EAD的度数 如图,在三角形ABC中,∠ACB=90°,AC=AE,BC=BF则角ECF等于 5.2×4.8+4.8×4.8简便计算算出来讲原因 三角形ABC中,AD、AE分别是三角形ABC的高和角平分线,∠C=60°∠B=28°求∠DAE 如图在三角形abc中角acb等于45度角a等于九十度bd是角abc的平分线ch 2.5×2.4÷1.4+4.8÷2.1×2.5的简便运算 已知,如图在三角形ABC中,AD,AE分别是三角形ABC的高和角平分线,若∠B=30度,∠C=50度.①求∠DAE的度数②试写出∠DAE与∠C-∠B有何关系(不必证明) 如图,在三角形ABC全等于三角形A’B’C’,角∠ACB等于90°,∠A等于25°,点B在A’B’上,D是BB’的中点,连接CD,求∠ACA’的度数 简便运算:4/11*(2/5-1/4) 在△ABC中,∠B>∠C,AD为三角形的角平分线,AE为高线试说明∠DAE=1/2(∠B-∠C) 如图 在rt三角形abc中 角acb等于90度 a=5 c=13 求b若斜边AB上的高为CD 求CD 简便运算:40.5÷1/4*[(1-1/4)*1.2] 如图,在三角形ABC中,AD是BC边上的高,AE是三角形ABC的角平分线.若角B等于α,角C等如图,在△ABC中,AD是BC边上的高,AE是△ABC的角平分线。若∠B等于α,∠C等于β(α<β),用含α,β的代数式来表示 如图,在三角形ABC中,角ACB=90°,角A=60°,CD,CE分别是边AB上的中线和高.求证角ACE=∠ECD=∠DCB 简便计算4.5*9*1.2=?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn