0

手短に..

SELECT * 
FROM tbl1 
LEFT OUTER JOIN tbl2 ON tbl1.ID = tbl2.externalRefID 
WHERE tbl1.varref = '12345' OR tbl2.varref = '12345';

これらのテーブルのデータ量に関係なく、このクエリには永遠に時間がかかります。ただし、externalRefID では一致しないことが多いため、2 番目のテーブルを外部結合する必要があります。参照されるすべての列に対して作成されたインデックスですが、複数のテーブルにまたがるインデックスが必要なため違いはありません (それは可能ですか?)

これは明らかなはずですが、木には木が見えません...

4

1 に答える 1

0

クエリを UNION クエリにリファクタリングすることを検討しましたか?

SELECT *
  FROM tbl1 INNER JOIN tbl2 ON tbl1.id = tbl2.externalRefId
 WHERE tbl2.varref = '12345'
UNION
SELECT *
  FROM tbl1 OUTER JOIN tbl2 ON tbl1.id = tbl2.externalRefId
 WHERE tab.1.varref = '12345'

これにもUNION ALLを使用できるかもしれません。

于 2013-04-03T12:05:24.767 に答える