次のようなストアド プロシージャがあります。
create proc wsp_test
(
@age int
, @userName varchar(30)
)
as
select userID, userName
from Users
where userName like '%' + @userName + '%'
and age > @age
C# コードは次のとおりです。
ケース 1:
SqlCommand _cmd = new SqlCommand();
_cmd.Parameters.Add("age", SqlDbType.Int, 4);
_cmd.Parameters.Add("UserName", SqlDbType.VarChar, 30);
ケース 2:
SqlCommand _cmd = new SqlCommand();
_cmd.Parameters.Add("age", SqlDbType.Int);
_cmd.Parameters.Add("UserName", SqlDbType.VarChar);
ケース 3:
SqlCommand _cmd = new SqlCommand();
_cmd.Parameters.Add("age");
_cmd.Parameters.Add("UserName");
ケース 4:
SqlCommand _cmd = new SqlCommand();
_cmd.CommandText = "EXEC wsp_test 20, 'John'";
ここで私の質問は、パラメーターのデータ型または長さを指定することは、パフォーマンスとどのような関係があるのでしょうか?
どれが最高のパフォーマンスを持っていますか? 信頼できる Microsoft の Web サイトのドキュメントはありますか?
または、パラメーターのデータ型と長さを指定するセキュリティ上の理由はありますか?