【发布时间】:2013-06-27 09:08:40
【问题描述】:
我越来越喜欢CREATE VIEW 的用处。例如,它允许我通过COALESCE(post.publish, profile.publish) 获得全局值和特定值,这样如果publish 是NULL,则取而代之的是全局值。
从性能和逻辑的角度来看,我有点好奇的部分是,我应该如何将它与现有表一起使用。假设我有一张桌子:
CREATE TABLE post (
id INT,
profile_id INT,
name VARCHAR,
publish ENUM('TRUE', 'FALSE') NULL
)
CREATE VIEW 最好像这样运行:
CREATE VIEW post_info AS
SELECT post.*, COALESCE(post.publish, profile.publish) AS publish
FROM post
INNER JOIN profile
ON post.profile_id = profile.id
并且仅在 SELECT 情况下使用 post_info,或者:
CREATE VIEW post_info AS
SELECT post.id, COALESCE(post.publish, profile.publish) AS publish
FROM post
INNER JOIN profile
ON post.profile_id = profile.id
当需要额外的值时,JOIN post_info 和 post 在 SELECT 中?
请分享您对此的见解和想法。我想听听您对每种解决方案的优缺点的意见。也可以是我没有提到的。
【问题讨论】:
-
SELECT *永远不会好。 -
我知道我通常喜欢避开
*。但是我觉得这是一个特殊情况,您可以用更多列来完成表格。 -
publish ENUM('TRUE', 'FALSE') NULL?!哎呀!为什么不publish BOOLEAN NULL? -
我发现更好地了解我的表格比在更多列中包含大量整数更容易。也许不是最好的理由,但只是习惯了。
标签: mysql database-design