0

2 つのテーブルがTable1ありTable2、条件Fuzzy_Qgram (近似一致の最適化)を満たすすべての行を検索する必要がTable1.LastNameあります。Table2.LastName

ここに私のクエリがあります:

Select * from Table1 
Cross Join
Table2
Where Fuzzy_Qgram(Table1.LastName,Table2.LastName)> =1.5

このクエリでは、各行にTable1各行が乗算されTable2、条件を満たす行Fuzzy_Qgram(Table1.LastName,Table2.LastName)> =1.5が返されます。

300,000 行以上 と3000 行Table1以上があるため、クエリの実行が非常に遅いTable2

Cross Join最適化をより迅速に行うために、そのようなクエリに代わるものはありますか?

4

2 に答える 2

0

長い話を短くするために。

SELECT * 
FROM 
 Table1 t1
 JOIN Table2 t2
  ON 1=1
 CROSS APPLY (
  SELECT 
    fuzzy_qgram = t1.someColumnOf_t1 + t2.someColumnOf_t2
 ) ext 
WHERE ext.fuzzy_qgram >= 1.5

もちろん、t1.someColumnOf_t1 + t2.someColumnOf_t2fuzzy_qgram ロジックに置き換える必要があります。これを使用すると、大幅な高速化が見られる可能性があります。

于 2013-06-12T09:15:46.080 に答える