C#SqlDataReader ReadAsync()在大varbinary上占用8s vs Read()2ms

时间:2017-10-06 10:58:11

标签: c# sql ado.net sqldatareader

我不知道我可能做了什么导致这种情况,但是await reader.ReadAsync()需要8000毫秒,而如果我用同一方法中的ReadAsync()替换Read()则需要2毫秒

using (SqlConnection conn = new SqlConnection())
{
    conn.ConnectionString = connectionString;
    await conn.OpenAsync();

    string cmdText = "SELECT * FROM images WHERE order_id = @OrderId";

    using (SqlCommand cmd = new SqlCommand(cmdText, conn))
    {
        cmd.Parameters.Add("@OrderId", SqlDbType.UniqueIdentifier).Value = id;

        using (var reader = await cmd.ExecuteReaderAsync())
        {
            if (!reader.HasRows) return null;

            await reader.ReadAsync();
            return (byte[])reader["image"];
        }
     }
 }

删除了一些可读性方法

有问题的varbinary大小约为11MB。实际的查询执行仍然很快,只是读取速度非常慢。较小的varbinaries很好。

image列是FILESTREAM

0 个答案:

没有答案