复杂查询是指必须使用至少 2 个连接的查询。假设我已经构建了数据库的架构/模型。现在假设我有 users.user_id = 5
我要找logins.lastlogin
, groups.groupname
,和history.user_weight
。我不会编写任何连接 SQL 语句,所有这些语句都将通过数据库的模式/模型在后台连接。 MySQL 可以吗?
最佳答案
如果您不喜欢“ View ”想法 - 顺便说一句,这是理想的 - 您可以随时模仿 Oracle-materialized views布兰科提到这样做:
在您要加入的每个表、users
、登录
,组
和历史
;这将更新名为 lgh
的新第五个表(示例)
因此,您可以使用这个新的 lgh
表来执行上面您想要的查询。与实际 View 相比,它可能会减少扫描的行数,但现在每次原始 4 个表中任何一个表中的数据发生更改时都会产生开销。根据您使用这个新 lgh 表与更新其他 4 个表的频率,您可能会看到一些性能改进。
免责声明:
- 我不赞成这种解决方法,这只是针对您的问题的替代建议。
- 您确实应该考虑向原始 4 个表添加更多索引,甚至可以为该连接查询中使用的每一列添加更多索引。
- 这可能类似于“缓存”......但不完全是。
关于mysql - 是否可以使用 MySQL 的模型/架构进行复杂查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12191915/