テーブルが空の場合、私は3つの性能がすべて似ていると思います。しかし、テーブルに何百万ものレコードがある場合、パフォーマンスの影響はどうなるでしょうか。テーブルが空の場合のハンドルMAX()のオプションを修正しますか?
1。元のクエリは影響を受けませんが、2つの分離されたdbのコンサルトを作成する必要があるため、好きではありません。
2。なぜなら、空のテーブルがインデックスを使用して最大値を見つける代わりにすべての行を持っていなければならないからです。
3。これはエラーを発生させる代わりにnullを返すべきです。
long? LastInsertedID;
try
{
LastInsertedID = db.myTable.Any() ?
db.myTable.Max(p => p.id)
: 0;
LastInsertedID = db.myTable.Select(p => p.id)
.DefaultIfEmpty(0)
.Max();
LastInsertedID = db.myTable.Max(p => p.id); -- cause Exception
}
例外:
{ "マテリア値がnullであるため、値型へのキャスト『System.Int64』は失敗した結果の型のジェネリックパラメータまたはNULL可能タイプを使用する必要があり、クエリのどちらか。 "}
id' 'の種類は何ですか?私はそれは "シーケンスはアイテムが含まれていない例外"を投げるだろうと思った –
は、null可能な長整数ではありませんが、問題はdbが空の場合です。 –