1

ユーザーデータを格納する2つのテーブルがあります。1つは内部ユーザー用、もう1つは外部ユーザー用です。両方のユーザーが本を購入するので、以下のSQLスクリプトを使用しました

select o.orderid, o.orderdate, u.firstname, u.lastname from OrderTable o inner join 
(
  select inneruser_id as uid, firstname, lastname from innerUser where len(firstname) > 0 or len(lastname) > 0
  union
  select external_id as uid, firstname, lastname from externalUser where len(firstname) > 0 or len(lastname) > 0
) u on u.uid = o.userId where o.orderdate > {0}

テーブルinnerUserの場合、innneruser_idは主キーですが、external_idはexternalUserテーブルの主キーではありません。200,000を超える内部ユーザーと約100,000の外部ユーザーが存在するため、unionの結果にまだu.uidのインデックスがあるかどうかを知りたいです。 。

external_idにインデックスを追加する必要がありますか?これによりクエリのパフォーマンスが向上しますか?助けていただければ幸いです。

4

2 に答える 2

0

u.uidそうかもしれませんが、 、o.userId、および にインデックスを追加するo.orderdateと、結合とフィルタリングに関与するため、パフォーマンスが向上する可能性が高くなります。

于 2012-06-06T06:31:11.820 に答える