0

識別子ではない共通フィールドを持つ3つのテーブルがあります。例えば:

dairy_warehouse
   -dairyId (primary key)
   -expiration_date
   -other dairy related fields

frozen_food_warehouse
   -frozenFoodId (primary key)
   -expiration_date
   -other frozen food related fields (not same as dairy related fields)

dry_goods_warehouse
   -dryGoodsId (primary key)
   -expiration_date
   -other dry goods related fields (not same as frozen food or dairy fields)

来月に期限切れになるすべてのアイテムを一覧表示するレポートを作成しようとしています。3つのテーブル間に外部キーの関係がないため、結合は機能しないと思います。私は現在、expiration_dateにインデックスを追加し、ユニオンと3つのサブ選択を使用することに傾倒していますが、これがひどいパフォーマンスになるのではないかと心配しています。より良い解決策はありますか?

4

2 に答える 2

2

ユニオンを使用しても、各クエリがインデックスにヒットしている限り、パフォーマンスに影響はありません。インデックスを追加するというあなたの提案expiration_dateは正しいことです。

テーブル間で関連するレコードはないと言うので、外部キーはありません。

于 2011-12-08T17:50:46.370 に答える
0

外部キーは、参照整合性のためのものです。「子」テーブルが「マスター」テーブル*に存在しない値を指定できないようにするためです。外部キー自体は、SELECTクエリのパフォーマンスを向上させません。「expiration_date」にインデックスを追加すると、パフォーマンスの高いクエリが生成されるはずです。

  • RIと外部キーを使用するシナリオは他にもたくさんありますが、これが最も一般的なシナリオです。
于 2011-12-08T17:51:48.503 に答える