我有三个表有一个公共字段,而不是它的标识符。例如:
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上添加索引并使用union和3个子选择,但我担心这会有糟糕的表现。有更好的解决方案吗?
答案 0 :(得分:2)
只要每个查询都在访问索引,使用Union就不会影响性能。您在expiration_date
上添加索引的建议是正确的。
没有外键,因为我会说表中没有任何记录相关。
答案 1 :(得分:0)
外键用于引用完整性 - 以确保“子”表不能指定“主”表*中不存在的值。外键本身不会加快SELECT查询性能。您认为在“expiration_date”上添加索引应该会产生高性能查询。