硬SQL造成每次解析成本,参数化可以服用执行计划:
private ENCOUNTERRECEIVINGINFO_LITE GetReceivePhoneAddress(int flag, int placerGroupId)
{
List<ENCOUNTERRECEIVINGINFO_LITE> oprnItems = new List<ENCOUNTERRECEIVINGINFO_LITE>();
string sql;
if (flag == 0)
sql = " SELECT A.ENCOUNTERRECEIVINGINFOID, A.ENCOUNTERID, A.PHONE, A.ADDRESSLINE, A.LASTMODIFIEDON "
+ "\r\n FROM PRPA.ENCOUNTERRECEIVINGINFO A, POOR.ORDERPRESCRIPTION B, POOR.PLACERGROUP C WHERE A.ENCOUNTERRECEIVINGINFOID = B.RECEIVINGINFOID AND B.PLACERGROUPID = C.PLACERGROUPID AND A.ISDELETED = 0 AND C.PLACERGROUPID = :PID ORDER BY A.LASTMODIFIEDON DESC ";
else
sql = " SELECT A.ENCOUNTERRECEIVINGINFOID, A.ENCOUNTERID, A.PHONE, A.ADDRESSLINE, A.LASTMODIFIEDON "
+ "\r\n FROM PRPA.ENCOUNTERRECEIVINGINFO A, POOR.ORDERREQUEST B WHERE A.ENCOUNTERRECEIVINGINFOID = B.RECEIVINGINFOID AND A.ISDELETED = 0 AND (B.PARENTID = :PID OR B.ORDERREQUESTID = :PID) ORDER BY A.LASTMODIFIEDON DESC ";
using (ServerContext sc = WcfServiceHelper.CreateServerContext(ClientContext.Instance))
{
using (DbConnection cn = sc.CreateConnection(Dbs.IP, false))
{
cn.Open();
oprnItems = DapperHelper.Query<ENCOUNTERRECEIVINGINFO_LITE>(cn, sql, new { PID = placerGroupId }).ToList();
}
}
return oprnItems.FirstOrDefault();
}