您的位置:首页 >> 数据库 >> 数据库其它 >> 正文
数据库其它 RSS
 

如何优化关系数据库查询

http://www.rdxx.com 06年01月08日 01:30 techrepublic 我要投稿

关键词: 数据库查询 , 关系 , 优化 , 数据 , 查询
 

WHERE语句是确定索引的选择语句的重要组成部分。WHERE语句过滤了显示记录的数量,也是查询优化器查找索引值的最容易的方法。WHERE语句的使用方法有很多种,以下为通常使用到的几种形式:

匹配(相等)

WHERE语句最为常用的例子就是一个记录或多个记录的匹配。当你指定一个特定字段等于一个值时,查询优化器将获知它要查询的索引入口,并识别满足查询条件的记录。这就大大地过滤读取记录的数量,从而减少查询所需要的时间。并且,查询分析器将可找到包含与匹配操作有关的字段索引的位置。

大于或小于

虽然匹配和相等是最为普通的选择方式,而WHERE语句中的查询范围要求也是经常见到的。在这种情况下,查询分析器获知大于或者小于指定值的索引范围。通常,查询分析器可从多个独立语句中确定被读取的索引百分含量,并决定是否值得使用索引技术。

函数

在WHERE语句中使用函数可以限制索引查询的范围。查询分析器的查询结果难于确定,尤其在执行非常量字段的时候。所以,使用WHERE语句的函数将尽可能减少查询次数。

使用ORDER BY语句

一旦查询分析器以WHERE语句来判断,它将以ORDER BY语句而开始查询。如果查询优化器找到正确顺序行的相应索引,并且这一索引与WHERE条件相符合,优化器将会直接使用到索引技术。

为了方便使用索引,ORDER BY语句不应该包含不必要的字段。查询分析器不能识别一个字段的表面意思,而ORDER BY语句可实现按照字段来排序。由此,如果你的ORDER BY语句中包括字段,优化器将会找到包含所有这些字段的索引。在ORDER BY语句中列出每一字段将有效地阻止查询优化器使用索引。

详细索引(Covering indices)

以上我提到查询分析器使用索引也会带来负面,所以有时候我们将不使用索引技术,特别是对于已经确定顺序的索引。

比如,如果你从一个用户记录中选择User ID,First Name,LastName以及EmailAddress,你可获得包含所有这些字段的一个索引,然后查询分析器可以直接使用索引并读取数据表。

此时,使用一个双向对照表(cross reference table)将特别有用。你可以在一个方向上使用一个集簇索引,然后在相反方向建立一个带有字段的索引。这样SQL服务器的第一个方向上可以使用物理表查询,而在相反方向上使用到索引技术。

由于长关键字的原因,详细索引需要额外的空间和更多的时间。然而,如果你有一个参考表,详细索引能够有助于查询分析器更好地工作。

帮助查询优化器

当你提交一个查询之后,查询分析器的执行都必须通过很多环节。这些环节将有助于快速地获得结果。然而,通过在查询中指定你所需要的内容和建立正确的索引,即帮助查询优化器的操作,以上过程才能顺利完成。

9 7 3 1 2 3 4 8 :


 
 
标签: 数据库查询 , 关系 , 优化 , 数据 , 查询 打印本文
 
 
  热点搜索
 
 
 



Valid XHTML 1.0 Transitional
Copyright ©2005 - 2008 Rdxx.Com,All Rights Reserved
收藏本页
收藏本站