私はEntity Frameworkを使用していますが、パフォーマンスに関して質問があります。ここでLinqメソッドの追加とストアドプロシージャの追加
は私のLINQのメソッドを追加します:
CREATE PROC prCreateCar
(@plate NVARCHAR(20),
@model NVARCHAR(50),
@color NVARCHAR(10),
@image NVARCHAR(MAX))
AS
BEGIN
INSERT INTO CarTable
VALUES (@plate, @model, @color, @image)
END
そして、これとasp.netからそれを呼び出す:
CarTable newCar = new CarTable()
{
CarPlate = plate,
CarModel = model,
CarColor = color,
CarImage = image
};
entity.CarTable.Add(newCar);
entity.SaveChanges();
そして、ここでは、同じ目的のために、ストアドプロシージャです
entity.prCreateCar('34 F5 3498','Renault Clio','Blue','Images/Cars/clio.png');
どちらも問題なく動作しますが、ここでは私の質問です。私は、ストアドプロシージャが高速だが、それは本当ですか?それが真であれば、SELECT、DELETE、UPDATE、INSERTのようなすべての条件で高速ですか?
あなた自身がそれを測定するでしょう。 http://stackoverflow.com/questions/14530/linq-to-sql-vs-stored-proceduresおよびhttp://stackoverflow.com/questions/752064/performance-difference-between-linq-and-stored-proceduresを参照してください。 – Habib
これはEntity Frameworkの下で使用している**実際のRDBMS **に依存しますが、この方法でSQL Serverを使用している場合は、パフォーマンスは非常に匹敵します。両方のアプローチでは最終的に実行する必要のあるパラメータ化されたクエリが生成されます。両方とも正しく実行されれば、非常に似たように動作します。 –
しかし、注意すべき点は次のとおりです。*なぜ*画像に 'nvarchar(max)'を使用していますか?これは**バイナリ**のデータセットです。これは文字列ベースのデータ型の代わりに 'varbinary(max)'を使ったほうが良いでしょう –