1
我有一些代碼嘗試爲給定的Oracle模式和表收集表統計信息。該代碼應該複製看起來像這樣的SQL語句:從.Net呼叫GATHER_TABLE_STATS
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname=>'SchemaName', tabname=>'TableName', estimate_percent=>DBMS_STATS.AUTO_SAMPLE_SIZE, method_opt=>'FOR ALL COLUMNS SIZE AUTO');
的C#代碼如下所示:
using (var connection = new OracleConnection(GetConnectionString()))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = "DBMS_STATS.GATHER_TABLE_STATS";
command.CommandType = CommandType.StoredProcedure;
command.Parameters.Add(new OracleParameter("ownname", "SchemaName"));
command.Parameters.Add(new OracleParameter("tabname", "TableName"));
//command.Parameters.Add(new OracleParameter("estimate_percent", "DBMS_STATS.AUTO_SAMPLE_SIZE"));
//command.Parameters.Add(new OracleParameter("method_opt", "FOR ALL COLUMNS SIZE AUTO"));
command.ExecuteNonQuery();
}
connection.Close();
}
Oracle驅動程序是不滿意DBMS_STATS.AUTO_SAMPLE_SIZE
出於顯而易見的原因,但我不知道爲什麼它也不允許FOR ALL COLUMNS SIZE AUTO
。
在從.Net調用此proc時設置參數estimate_percent
和method_opt
的最佳方法的任何想法?