Oracle に MESSAGE という名前のテーブルがあり、そのテーブルには列 TERMINALID (VARCHAR2 8 NOT NULL) があります。この列には索引があります。このテーブルには約 300,000,000 のレコードがあります。
これで問題なく動作します (0.0 秒) :
using (var con = new OracleConnection(connectionString2))
{
try
{
con.Open();
var parameters = new DynamicParameters();
parameters.Add("PTerminalId", value: "04447777", dbType: System.Data.DbType.AnsiString);
Console.WriteLine("ora - messages #{0}", con.Query<decimal>("SELECT COUNT(*) FROM MESSAGE WHERE TERMINALID=:PTerminalId", param: parameters).FirstOrDefault());
}
finally { con.Close(); }
}
そして、これは失敗します(タイムアウト):
using (var con = new OracleConnection(Properties.Settings.Default.GSMConnectionString2))
{
try
{
con.Open();
Console.WriteLine("ora - messages #{0}", con.Query<decimal>("SELECT COUNT(*) FROM GSM.MESSAGE WHERE TERMINALID=:PTerminalId", param: new { PTerminalId = "04447777" }).FirstOrDefault());
}
finally { con.Close(); }
}
なぜそうなのですか?