使用SQL Server 2005,在以下情况下加入两个表的最有效方法是什么?SQL Server 2005 - 根据表列中的条件进行连接
每个表格中的记录数量可能相当大,约为200000个。
我现在唯一想到这样做的唯一方法是对每个项目使用游标和一些动态SQL,这显然会非常低效。
我有两个表 - PERSON
表和SEARCHITEMS
表。 SEARCHITEMS
表包含一个列,其中包含一些简单条件,将表与PERSON
表匹配时将使用该列。该条件可引用PERSON
表中的任何列。
例如给出如下表:
PERSON
表
PERSONID FIRSTNAME LASTNAME GENDER AGE ... VARIOUS OTHER COLUMNS
1 Fred Bloggs M 16
....
200000 Steve Smith M 18
SEARCHITEMS
表
ITEMID DESCRIPTION SEARCHCRITERIA
1 Males GENDER = 'M'
2 Aged 16 AGE=16
3 Some Statistic {OTHERCOLUMN >= SOMEVALUE AND OTHERCOLUMN < SOMEVALUE}
....
200000 Males Aged 16 GENDER = 'M' AND AGE = 16
RESULTS
表应包含这样的事情:
ITEMID DESCRIPTION PERSONID LASTNAME
1 Males 1 Bloggs
1 Males 200000 Smith
2 Aged 16 1 Bloggs
....
200000 Males Aged 16 1 Bloggs
这将是很好能够只是像做
INSERT INTO RESULTSTABLE
SELECT *
FROM PERSON P
LEFT JOIN SEARCHITEMS SI ON (APPLY SI.SEARCHCRITERIA TO P)
,但我看不到使这项工作的一种方式。任何帮助或想法表示赞赏。
你试图完全解决什么问题?仅仅是加入这两张表的要求? – Ali 2011-04-06 10:50:32
要求是将任何匹配记录的结果插入到结果表中 - 它不一定需要使用它只需要有效的连接 - 如果可以实现,我发现连接最终效率最高。 – 2011-04-06 11:09:21
我认为我们应该在人员和搜索项目之间建立一个中间表格,因为结果表格的大小与当前描述的大小不符,我曾考虑过这个问题,除非您知道所有搜索条件组合(我非常怀疑),否则我无法想出使用游标的更好解决方案。 – Ali 2011-04-06 11:21:16