1

現在、私は (MS) SQL を学んでおり、さまざまな集計関数のサンプルを試していました。私が持っている質問は次のとおりです。集計関数を使用するときに、(テーブルに) 一意の制約列があると役立つシナリオ (集計関数を使用するサンプルクエリ) はありますか?

注意: 私は問題の解決策を見つけようとしているのではなく、実際の SQL プログラミングにそのようなシナリオが存在するかどうかを確認しようとしています。

4

2 に答える 2

1

当面の理論的なシナリオの 1 つが思い浮かびます。一意の制約は一意のインデックスによってサポートされるため、そのフィールドを集計するだけの場合、インデックスはテーブルをスキャンするよりも狭くなりますが、それはクエリが他のフィールドを使用しなかったため、カバーしていました。そうしないと、NC インデックスから外れてしまいます。

一意の制約を強制するためのインデックスの追加は、自動的にクエリに役立つ可能性があると思いますが、少し不自然かもしれません。

フィールドを一意にする必要がある場合はフィールドに一意の制約を設定し、クエリのパフォーマンスを向上させるためにいくつかのインデックスが必要な場合は、それらを個別に検討するか、そのフィールドに一意のインデックスを追加し、他のフィールドを含めてカバーします (あまり役に立たない、ただし、単一フィールドの一意のインデックスよりも便利です)

于 2012-11-07T16:35:10.060 に答える
0

Let's take following two tables, one has records for subject name and subject Id and another table contains record for student having marks in particular subjects.

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

so If I need to find AVG of marks obtained in Science subject by all student who have attempted for Science(SubjectId =2) then I would fire following query.

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