次のテーブル構造を使用します。
表 1:顧客
CustID(primary key) | CustName(indexed)
----------------------------------
C1 Cust1
C2 Cust2
. Cust3
. Cust.
. Cust.
C10000 Cust10000
表 2:カスタムフィールド
FieldID (primary key) | ID (indexed) | FieldValue
---------------------------------------------------------------------
1 C1 Test
2 C2 Test
3 C3 Test
4 C4 Test
. . Test
. . Test
few millions Z1 Test
"ID" column is indexed.
以下を出力しようとしています。
CustID | Field 1 | Field 2 | Field 3 | .... | Field N
----------------------------------------------------------
のようなクエリを書いてみました
Select
CustID, A1.FieldValue as [Field 1], A2.FieldValue as [Field 2]
from
Customers
left outer join
CustomFields A1 on Customers.custID = A1.ID
left outer join
CustomFields A2 on Customers.custID = A2.ID
left outer join
CustomFields An on Customers.custID = An.ID
where
custName like 'C%'
テーブルには数百万のレコードが含まれているためCustomFields
、上記のクエリはうまく機能しません。現在、約 10 ~ 12 秒かかります (500 人の顧客と 6 つのフィールドの場合)。
ここで左外部結合が時間を追加していると思います。問題を解決するための考えは本当に役に立ちますか?
プラットフォーム: SQL Server 2005
更新しました :
CustomFields
table は一般的なテーブルであり、他のエンティティ (ベンダー、アイテムなど) のフィールドを含めることができます。