0

我有三个表,它们有一个不是其标识符的公共字段。例如:

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)

我正在尝试构建一个报告,列出下个月到期的所有项目。我不认为连接会起作用,因为三个表之间没有外键关系。我目前倾向于在 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 回答