有效地在MS SQL RDBMS中查找bigdata表的相关子范围

时间:2017-09-18 07:19:45

标签: sql sql-server range

关注我的问题here。 我有MS SQL Server(常规SQL),它拥有2个表。每个表包含约500,000条记录。当我写这个查询时它会叠加。如何让它以有效的方式运行? 以下是表格: 第一个表 - MajorRange

| From   |  To     | Group ....
|--------|---------|---------
| 1200   |   1500  | A
| 2200   |   2700  | B
| 1700   |   1900  | C
| 2100   |   2150  | D
...

第二个表格 - SubRange

  | From   |  To     | Group ....
  |--------|---------|---------
  | 1208   |   1300  | E
  | 1400   |   1600  | F
  | 1700   |   2100  | G
  | 2100   |   2500  | H
    ... 

输出表应该是SubRange组之间重叠的所有MajorRange组。在以下示例中,结果表为:

| Major  |  Sub | 
|--------|------|-
| A      |   E  | 
| A      |   F  |
| B      |   H  |
| C      |   G  |
| D      |   H  |

我使用的查询类似于:

select M.Group Major , S.Group Sub 
From MajorRange M, SubRange S
where M.From <= S.To and M.To >= S.From

0 个答案:

没有答案