【发布时间】:2019-04-04 08:39:41
【问题描述】:
我已经在谷歌搜索了一段时间,但我没有找到解决我的“问题”的答案。
我有 3 个具有以下结构的示例表。
客户:
- 客户 ID
- 名字
- 姓氏
- 性别
- 已删除
发票:
- 发票编号
- 客户 ID
- 金额
- 职位
- 有效
发票位置:
- InvoicePosId
- 发票编号
- 职位名称
- 已付费
现在我想通过以下查询加入他们。
SELECT T1.FirstName,
T1.LastName,
T2.Amount,
T3.PosName
FROM Customer AS T1
JOIN Invoice AS T2 ON T1.CustomerId = T2.CustomerId
JOIN InvoicePos AS T3 ON T2.InvoiceId = T3.InvoiceId
WHERE T1.FirstName = 'A'
AND T1.LastName = 'B'
AND T2.Positions = 3
AND T3.IsPaid = 1;
对于表 Customer,我有一个 FirstName、LastName、CustomerId 的索引
对于InvoicePos,我有一个 IsPaid、InvoiceId、InvoicePosId 的索引
但是我应该为 Table Invoice 使用什么索引?
【问题讨论】:
-
索引不是可以简单地用简单的答案“教”的东西;需要更深入的了解,您可能会更好地阅读文章和文档,甚至参加课程,了解索引表的最佳方法。你没有提到主键,如果它们是集群的,这也有很大的不同。
-
t1、t2 和 t3 是糟糕的表别名。使用有意义的表别名,例如 C 代表客户。
标签: sql sql-server join indexing where-clause