使用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