热点推荐
ZOL首页 > 服务器 > 知识学堂 > 如何用SQL Server JOIN加快范围查找

如何用SQL Server JOIN加快范围查找


CNET中国·ZOL 【转载】 2007年11月28日 08:21 评论

  对SQL开发者而言,JION是一个基本的组件,然而了解它们的真正作用的开发者却相对较少。许多开发者了解相等连接(equi-JOIN),它将表T1中的一个值与表T2中的一个值进行比较,就像这样:

  SELECT * FROM T1 INNER JOIN T2 ON T1

  这种SQL Sever开发只是JOIN应用的开始。首先你要意识到你可以用其它运算符来代替上面的等号。在多情况下,这没有多大用处,但你可以用<>替代等号(=),将T1中的一行与并不与T1中的值匹配的T2中的所有行连接起来。

  范围查找是JOIN的一个更加有趣且实用的用法。在数千种业务流程,如税表、运输价格、学生成绩和保险费率中,范围查找都是最基本的应用。

  不可能在查找表中发现任何给定的值,是这些情况下的根本理念。相反,查找表包含两栏:一栏中范围的最小基数(Floor),一栏是范围的最大基数(Ceiling)。列表A包含建立样本表的一个脚本。表1和表2中是样本行。

  表1   RangeID


RangeID

Floor

Ceiling

Rate

1

0.00

1.99

5.0000

2

2.0

3.99

8.5000

3

4.0

6.99

11.0000

4

7.0

9.99

13.0000

NULL

NULL

NULL`

NULL

    表2

ShipmentID

Weight

1

1.30

2

2.70

3

3.00

4

1.90

5

2.40

6

3.30

7

4.70

NULL

NULL

  SQL要求对列表B中的数据执行查询,于是得到如图3所见的结果集。查询得到了你希望的结果。如上所述,这是一个直接SELECT查询,但你可以根据自己的需要,轻易地把它变成一个存储过程或一个参数化UDF。

 

ShipmentID

Weight

Floor

Ceiling

Rate

1

1.30

0.00

1.99

5.00

4

1.90

0.00

1.99

5.00

2

2.70

2.00

3.99

8.50

3

3.00

2.00

3.99

8.50

5

2.40

2.00

3.99

8.50

6

3.30

2.00

3.99

8.50

7

4.70

4.00

6.99

11.00

 

  这种方法有无数的应用,而且它比用WHERE谓语编写相应的SQL代码要容易得多。另外,在一个计算所得税范围的大型查找表中,你可以对最小基数(Floor)和最大基数(Ceiling)栏编写索引并提高性能,因为优化器能够利用这些索引,从而迅速找到相应的行。

下载 Servers Check Pro 请点击://xiazai.zol.com.cn/detail/4/32933.shtml
给文章打分 5分为满分(共0人参与) 查看排行>>
频道热词:LED照明  工作站  云计算  
视觉焦点
服务器知识学堂热点
排行 文章标题
TOP10周热门服务器排行榜
  • 热门
  • 新品
  • 系列
查看完整榜单>>