2011-06-07 95 views
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_percentmethod_opt的最佳方法的任何想法?

回答

1

如果使用> 10G,則對於所有列大小自動已經是默認設置。

您應該可以完全省略參數。