C# 简洁的查询与QueryMultiple性能
我目前使用C# 简洁的查询与QueryMultiple性能,c#,dapper,C#,Dapper,我目前使用Query(8次是因为我必须将一些列转换为JSON,有时是单独转换),以生成所需的完整结果集。但是,我想知道是否可以通过使用QueryMultiple来提高性能。我有一个假设,QueryMultiple可以同时查询所有这些表,因此我不必等待每个查询完成 我还有一个选择。它是使用*Async版本的方法 但是,我无法在不显著更改代码的情况下实现querymultiple。我应该使用常规方法的querymultiple还是*Async版本?这两个备选方案之间的折衷是什么?我应该使用哪一个?Q
Query
(8次是因为我必须将一些列转换为JSON,有时是单独转换),以生成所需的完整结果集。但是,我想知道是否可以通过使用QueryMultiple
来提高性能。我有一个假设,QueryMultiple
可以同时查询所有这些表,因此我不必等待每个查询完成
我还有一个选择。它是使用*Async
版本的方法
但是,我无法在不显著更改代码的情况下实现
querymultiple
。我应该使用常规方法的querymultiple
还是*Async
版本?这两个备选方案之间的折衷是什么?我应该使用哪一个?QueryMultiple
将在一个批次中执行所有查询,结果仅返回数据库一次,而使用Query
执行八次单独查询也将返回八次
如果按顺序执行所有查询(不使用
Async
方法),则会浪费大量时间,因为在返回查询结果和应用程序接收下一个查询之间,数据库将处于空闲状态。使用Async
可以提高性能,因为在执行上一个查询时,应用程序可以向数据库发送另一个查询。使用Async
仍然会在一个查询中产生八次往返和批处理,这意味着使用QueryMultiple
最终(理论上)会产生最佳性能。另一个问题是QueryMultiple
是否同时执行所有查询?QueryMultiple
不执行查询,它只通过数据库连接将它们发送到DBMS。它是一批完成的(我想这就是你的意思)。查询的执行方式和顺序取决于DBMS。DBMS可以同时执行它们,但不必这样做。它也可能取决于查询的类型(例如,如果一个查询锁定一个表,那么另一个查询可能无法并行执行)。