Ste*_*ven 4 entity-framework entity-framework-core
我有一个非常大的表,我正在尝试获取其行数。使用COUNT(*)太慢,所以我想使用 EF Core 运行此查询:
int count = _dbContext.Database.ExecuteSqlRaw(
"SELECT Total_Rows = SUM(st.row_count) " +
"FROM sys.dm_db_partition_stats st " +
"WHERE object_name(object_id) = 'MyLargeTable' AND(index_id < 2)");
Run Code Online (Sandbox Code Playgroud)
唯一的问题是返回值不是查询结果,而是返回的记录数,只有1
有没有办法在这里获得正确的值,或者我需要使用不同的方法?
由于您只需要一个标量值,您还可以使用输出参数来检索数据,例如
var sql = @"
SELECT @Total_Rows = SUM(st.row_count)
FROM sys.dm_db_partition_stats st
WHERE object_name(object_id) = 'MyLargeTable' AND(index_id < 2)
";
var pTotalRows = new SqlParameter("@Total_Rows", System.Data.SqlDbType.BigInt);
pTotalRows.Direction = System.Data.ParameterDirection.Output;
db.Database.ExecuteSqlRaw(sql, pTotalRows);
var totalRows = (long?)(pTotalRows.Value == DBNull.Value ? null:pTotalRows.Value) ;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6654 次 |
| 最近记录: |