【发布时间】:2021-09-08 09:03:30
【问题描述】:
大家好,我正在做一个个人项目,但现在我几乎完成了所有工作,除了这个,我有 2 张桌子
用户
| id | name |
|---|---|
| 1 | john |
| 2 | doe |
账单
| id | month | status |
|---|---|---|
| 1 | january | paid |
| 2 | february | pending |
| 3 | march | pending |
但我试图向用户提供此信息的摘要,这将是最佳性能设置
-
执行三联查询 例如
选择 u.name,a.*,b.*
来自用户
左加入(从 status='paid' 的账单中选择 id,max(month) as last_month_paid)a
关于 u.id=a.id
左加入(从 status='pending' 的账单中选择 id,min(month) as last_month_pending)b
关于 u.id=b.id -
或创建 3 个数据库视图
a.已付帐单视图
b.未决账单视图
c.summary 视图
感谢您的 cmets
【问题讨论】:
-
视图对提高性能没有任何作用
-
此外,没有与给定用户和账单的关联。我可以看到唯一的账单 ID,但没有给定账单 ID 的用户 ID。
-
假设您的
month列是varchar,那么在此列上应用MAX()或MIN()是无稽之谈,因为四月总是最小值,九月总是最大值. -
我认为视图更省时,没有关联,因为我没有写下来,但存在于表和月份字段中它是 int