クエリでバインド変数を使用するとパフォーマンスが低下するようです。一部の例では 5 倍も低下しています。次の例では、完了までに平均で約 0.5 秒かかります。
string strId = "abcd";
using (var db = _conn.OpenDbConnection())
{
var sql = "SELECT count(*) FROM table WHERE idNum= :ID";
var r = db.QueryScalar<int>(sql, new { ID = strID.ToUpper() });
return r >= 1;
}
次のコードを実行すると、完了するまでに約 0.1 秒かかります。
string strId = "abcd";
using (var db = _conn.OpenDbConnection())
{
var sql = string.Format("SELECT count(*) FROM table WHERE idNum= '{0}'", strID.ToUpper());
var r = db.QueryScalar<int>(sql);
return r >= 1;
}
ここでパフォーマンスの問題を引き起こしているものを間違って使用していますか?
これは、ServiceStack.OrmLite のバージョン 3.9.71.0 を使用する Oracle データベースに対する C# です。