2

手動の SQL を記述する場合、クエリによって返されるデータのサイズと形状を簡単に見積もることができます。LINQ to SQL クエリでこれを行うのがますます難しくなっています。ときどき、予想よりもはるかに多くのデータを見つけることがあります。これにより、データベースに直接アクセスしているリモート クライアントの速度が大幅に低下する可能性があります。

クエリを実行して、ネットワーク経由で返されたデータの量を正確に把握し、これを使用して最適化できるようにしたいと考えています。

私はすでに DataContext.Log メソッドを使用してログを接続していますが、それは受信したデータではなく、送信された SQL を示すだけです。

任意のヒント?

4

3 に答える 3

2

DataContextのSqlConnectionを取得して、統計をオンにできるようです。

統計の1つは、「返されたバイト数」です。

MSDNリファレンスリンク

于 2008-09-18T20:25:03.647 に答える
1

注: 既存の DataContext がある場合は、接続を SqlConnection にキャストする必要があります

 ((SqlConnection)dc.Connection).StatisticsEnabled = true;

次に、次の方法で統計を取得します。

 ((SqlConnection)dc.Connection).RetrieveStatistics()
于 2009-02-25T18:59:38.653 に答える
0

DataContext の SqlConnection を取得する方法が見つからなかったので、SqlConnection を手動で作成しました。

SqlConnection sqlConnection = new SqlConnection("your_connection_string");
// enable statistics
cn.StatisticsEnabled = true;

// create your DataContext with the SqlConnection
NorthWindDataContext nwContext = new NorthWindDataContext(sqlConnection);

var products = from product in nwContext
               where product.Category.CategoryName = "Beverages"
               select product;
foreach (var product in products)
{
    //do something with product
}

// retrieve statistics - for keys see http://msdn.microsoft.com/en-us/library/7h2ahss8(VS.80).aspx
string bytesSent = sqlConnection.RetrieveStatistics()["BytesSent"].ToString();
string bytesReceived = sqlConnection.RetrieveStatistics()["BytesReceived"].ToString();
于 2009-02-25T11:29:57.330 に答える