SQL:唯一约束和聚合函数

时间:2012-11-07 16:29:09

标签: sql database

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

请注意:我不是试图找到问题的解决方案,而是试图查看现实世界的SQL编程中是否存在这样的场景。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

让我们看两个表,一个有主题名称和主题ID的记录,另一个表包含在特定主题中有标记的学生的记录。

  

Table1(SubjectId int unique,subject_name varchar,MaxMarks int)   表2(Id int,StudentId int,SubjectId,Marks int)

所以如果我需要找到所有尝试过的学生在科学科目中获得的AVG标记 科学(SubjectId = 2)然后我会触发查询。

SELECT AVG(Marks),  MaxMarks  
FROM Table1, Table2 
WHERE Table1.SubjectId = 2;