我使用以下代码获取azure表中所有行的计数,然后稍后在同一函数中使用。但是,我发现当我尝试使用变量tCount时,在某些情况下,如果我的计数很大,那么在使用变量时就不会返回全部计数。
例如,我知道一个表有1600多行,但是如果我将tCount的值放在行之后1秒钟,则当我查看tCount的值时,它只有900奇数
tCount = ((IQueryResultEnumerable<T>)tableRowCount).TotalCount;
返回正确的计数,但是我宁愿这样做而不会增加延迟。
我也尝试将代码放在异步任务中并等待它,但是得到了相同的结果。还有另一种方法吗?
var table = Client.GetSyncTable<T>();
var tableRowCount = (await table.Take(0)
.IncludeTotalCount()
.ToEnumerableAsync());
long tCount = 0;
tCount = ((IQueryResultEnumerable<T>)tableRowCount).TotalCount;
答案 0 :(得分:0)
您可以查询数据库元数据和“动态管理视图”来了解表具有的行数,而不是正在执行的操作。这种方法会更快。
SELECT t.name ,s.row_count from sys.tables t
JOIN sys.dm_db_partition_stats s
ON t.object_id = s.object_id
AND t.type_desc = ‘USER_TABLE’
AND t.name like ‘%YourTableName%’
AND s.index_id = 1