- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
常用SQL书写技巧
常用SQL语句书写技巧
SQL结构化查询字符串的改写,是实现数据库查询性能提升的最现实、避免表扫描建立“适当”的索引索引(index)是除表之外另一重要的、用户定义的存储在物理介质上的数据结构。当根据索引码的值搜索数据时,索引提供了对数据的快速访问。事实上,没有索引数据库也能根据SELECT语句成功地检索到结果,但随着表变得越来越大,使用“适当”的索引的效果就越来越明显。注意,在这句话中,我们用了“适当”这个词,这是因为,如果使用索引时不认真考虑其实现过程,索引既可以提高也会破坏数据库的工作性能。索引一种特殊的目录SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)我们把这种正文内容本身就是一种按照一定规则排列的目录称为“聚集索引”。汉语字典中按拼音查某一个字,就是使用“聚集索引非聚集索引(nonclustered index,也称非聚类索引、非簇集索引我们把目录纯粹是目录,正文纯粹是正文的排序方式称为“非聚集索引”。汉语字典中按部首查某一个字,部首目录和正文一定要刻意的通过页码才能联系到一起,其顺序不是天然一致的。
聚集索引与非聚集索引的最大区别就在于:聚集索引是对原数据表进行排序,因此只要符合索引条件,就能够直接连续的读取数据记录,几乎可以达到对数据表的零扫描;而非聚集索引仅仅只是另外建了一张索引表,取数据的时候,从索引表取得结果后,还需要到指针所指的数据行读取相应数据,因此,在性能上,聚集索引会大大优于非聚集索引。 但是在一张表中,聚集索引只允许一个,是比较宝贵的,因此要尽可能的用于那些使用频率最高的索引上。 另外,查询时必需要用到索引的起始列,否则索引无效。另外,起始列也必需是使用频繁的列,那样的索引性能才会达到最优化。
(二)表:何时使用聚集索引或非聚集索引动作描述使用聚集索引使用非聚集索引列经常被分组排序返回某范围内的数据一个或极少不同值小数目的不同值大数目的不同值 频繁更新的列 外键列 主键列 频繁修改索引列 (三)索引的1、聚集索引主键主键虽然SQL SERVER默认是在主键上建立聚集索引的通常,我们会在每个表中都建立一个ID列,以区分每条数据,并且这个ID列是自动增大的,步长一般为1。此时,如果我们将这个列设为主键,SQL SERVER会将此列默认为聚集索引。这样做有好处,就是可以让您的数据在数据库中按照ID进行物理排序,但这样做不大。
从我们前面谈到的聚集索引的定义我们可以看出,使用聚集索引的最大好处就是能够根据查询要求,迅速缩小查询范围,避免全表扫描。在实际应用中,因为ID号是自动生成的,我们并不知道每条记录的ID号,所以我们很难在实践中用ID号来进行查询。这就使让ID号这个主键作为聚集索引成为一种资源浪费。聚集索引聚集索引的优势是很明显的,而每个表中只能有一个聚集索引的规则,这使得聚集索引变得更加其次,让每个ID号都不同的字段作为聚集索引也不符合“大数目的不同值情况下不应建立聚合索引”规则;当然,这种情况只是针对用户经常修改记录内容,特别是索引项的时候会负作用,但对于查询速度并没有影响。
2、并非是在任何字段上简单地建立索引就能提高查询速度聚集索引建立“既不能绝大多数都相同,又不能只有极少数相同”在日期字段上建立聚合索引是合适。在中,我们每天都会文件,文件的发文日期相同聚合索引。在群集索引下,数据物理上按顺序数据页上,重复值也排列在一起,因而在范围查找时,可以先找到这个范围的起末点,且只在这个范围内扫描数据页,避免了大范围扫描,提高了查询速度。比如在雇员表的“性别”列上只有“男”与“女”两个不同值,因此就必要建立索引。3、聚集索引所有需要提高查询速度的字段复合索引我们仅用复合聚集索引的起始列作为查询条件和同时用到复合聚集索引的全部列的查询速度是几乎一样的,甚至比(在查询结果集数目一样的情况下);仅用复合聚集索引的非起始列作为查询条件的话,这个索引是不起任何作用的。复合聚集索引的所有列都用上,而且查询结果少的话,会形成“索引覆盖”,性能可以达到最优。无论是否经常使用聚合索引的其他列,其起始列一定要是使用最频繁的列。用聚合索引比用不是聚合索引的主键速度快用聚合索引比用一般主键作order by速度快,特别是在小数据量情况使用聚合索引内的时间段,搜索时间会按数据占整个数据表的百分比成比例减少,而无论聚合索引使用了多少个日期列不会因为有分秒的输入而减慢查询速度由于改变一个表的内容,将会索引。insert,update,delete语句将性能下降。,SQL语句下面就某些语句的where子句编写中需要注意的问题作详细介绍。在这些where子句中,即使某些列存在索引,但是由于编写了劣质的,系统在运行该语句时也不能使用该索引,而同样使用全表扫描,这就造成了响应速
文档评论(0)