1

目前我正在学习(MS)SQL,并且正在尝试各种聚合函数示例。我的问题是:是否有任何场景(使用聚合函数的示例查询)在使用聚合函数时具有唯一约束列(在表上)有帮助。

请注意:我不是想找到问题的解决方案,而是想看看现实世界的 SQL 编程中是否存在这种情况。

4

2 回答 2

1

想到一个直接的理论场景,唯一约束将由唯一索引支持,因此如果您只是聚合该字段,则索引将比扫描表更窄,但这将基于查询没有使用任何其他字段,因此被覆盖,否则它将超出 NC 索引。

我认为添加索引以强制执行唯一约束将自动具有潜在帮助查询的能力,但这可能有点做作。

如果您需要该字段是唯一的,则将唯一约束放在该字段上,如果您需要一些索引来帮助查询性能,请单独考虑它们,或者在该字段上添加唯一索引+包含其他字段以使其覆盖(不太有用,但比单个字段上的唯一索引更有用)

于 2012-11-07T16:35:10.060 回答
0

让我们看下面两张表,一张包含科目名称和科目 ID 的记录,另一张表包含学生在特定科目中得分的记录。

Table1(SubjectId int 唯一,subject_name varchar,MaxMarks int) Table2(Id int,StudentId int,SubjectId,Marks int)

因此,如果我需要查找所有尝试科学(SubjectId = 2)的学生在科学科目中获得的分数的 AVG,那么我将触发以下查询。

SELECT AVG(Marks),  MaxMarks  
FROM Table1, Table2 
WHERE Table1.SubjectId = 2;
于 2012-11-07T16:46:18.817 回答