在我的 MySQL 数据库中,我有一个products表格
id | type | name | weight | base_price | [...]
whereid是主键,type是ENUM('personal','industrial'). 个人和工业产品都在products_personal和products_industrial表中存储了一些附加信息。两者都是形式
pid | additional info [...]
pid外键在哪里和products.id的附加信息不同。在我的表中,我有两个函数(通过)和. 这些函数使用和一些附加信息来计算最终价格。products_personalproducts_industrialCREATE FUNCTIONPRICE_PERSONAL(...)PRICE_INDUSTRIAL(...)base_price
我希望为id | type | name | [...] | price我的所有产品创建一个视图。我现在的候选人是
CREATE VIEW foo AS
SELECT id, type, name, [...], PRICE_PERSONAL(params) AS price
FROM products
INNER JOIN products_personal ON products.id = products_personal.pid
UNION
SELECT id, type, name, [...], PRICE_INDUSTRIAL(params) AS price
FROM products
INNER JOIN products_industrial ON products.id = products_industrial.pid
但这很笨重,似乎会导致性能不佳ORDER BY(因为它需要对未索引的UNION结果进行排序)。
是否有更简洁的表或查询结构来完成此类查询?