Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/270.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 简洁的查询与QueryMultiple性能_C#_Dapper - Fatal编程技术网

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可以同时执行它们,但不必这样做。它也可能取决于查询的类型(例如,如果一个查询锁定一个表,那么另一个查询可能无法并行执行)。