Dapper Query vs QueryMultiple性能

时间:2019-02-07 07:11:43

标签: c# dapper

我目前正在使用Query<>查询8次(这是8次,因为我必须将某些列转换为JSON,有时还要分别转换)以生成所需的一个完整结果集。但是,我想知道是否可以通过使用QueryMultiple来提高性能。我有一个假设,QueryMultiple可以同时查询所有这些表,因此我不必等待每个查询完成。

我还有一个选择。它使用*Async版的方法。

但是,如果不对代码进行重大更改,就无法实现QueryMutiple。我应该使用QueryMutiple还是常规方法的*Async版本?两种选择之间的权衡是什么,我应该使用哪一种?

1 个答案:

答案 0 :(得分:3)

SELECT * FROM "UTC_ORDER_VIEW" WHERE "ORD_WORK_DATE" >= '2019-02-07' AND "ORD_WORK_DATE" <= '2019-02-07' ORDER BY "MT_SHORT_NAME" ASC, "ORD_CREATION_DATETIME" DESC SELECT * FROM "UTC_ORDER_VIEW" WHERE "ORD_WORK_DATE" >= "=" '2019-02-07' AND "ORD_WORK_DATE" <= "=" '2019-02-07' ORDER BY "MT_SHORT_NAME" ASC, "ORD_CREATION_DATETIME" DESC 将一次执行所有查询,从而导致到数据库的一次往返,而使用QueryMultiple执行8个单独的查询也将导致8次往返。

如果依次执行所有查询(不使用Query<>方法),则浪费了很多时间,因为数据库在返回查询结果和接收下一个查询之间将处于空闲状态根据您的应用。使用Async可以提高性能,因为您的应用程序可以在执行前一个查询的同时向数据库发送另一个查询。尽管使用Async仍然会导致一次查询的八次往返旅行和批处理,这意味着(理论上)使用Async最终会获得最佳性能。