Code: Select all
int oidUser = (int)oid;
var query = from client in entity.TblClientHead
join clientName in entity.TblClientName on client equals clientName.TblClientHead
where clientName.IsPrimary == true
&& client.FeeEarner.OIDUser == oidUser
select new
{
client.OIDClient,
client.Reference,
clientName.TblName.Surname,
clientName.TblAddresses.PostCode,
client.StampOpen,
client.Description
};
Code: Select all
select * from "TblClientHead" ch, "TblClientName" cn, "TblAddresses" ad, "TblName" na
where ch."OIDClient" = cn."OIDClient" and "OIDFeeEarner" = 16 and "IsPrimary" = true
and ad."OIDAddress" = cn."OIDAddress" and na."OIDName" = cn."OIDName";
Code: Select all
2009-07-22 10:54:24 BST LOG: duration: 15337.592 ms execute PRSTMT18147748091821867421/PORTAL18147748091821867421: SELECT
1 AS "C1",
"Extent1"."OIDClient" AS "OIDClient",
"Extent1"."Reference" AS "Reference",
"Extent5"."Forename" AS "Forename",
"Extent5"."Surname" AS "Surname",
"Extent6"."Line1" AS "Line1",
"Extent6"."PostCode" AS "PostCode",
"Extent1"."StampOpen" AS "StampOpen",
"Extent1"."Description" AS "Description"
FROM public."TblClientHead" AS "Extent1"
INNER JOIN public."TblClientName" AS "Extent2" ON EXISTS (SELECT
true AS "C1"
FROM ( SELECT true) AS "SingleRowTable1"
LEFT OUTER JOIN (SELECT
"Extent3"."OIDClient" AS "OIDClient"
FROM public."TblClientHead" AS "Extent3"
WHERE "Extent2"."OIDClient" = "Extent3"."OIDClient" ) AS "Project1" ON true = true
LEFT OUTER JOIN (SELECT
"Extent4"."OIDClient" AS "OIDClient"
FROM public."TblClientHead" AS "Extent4"
WHERE "Extent2"."OIDClient" = "Extent4"."OIDClient" ) AS "Project2" ON true = true
WHERE ("Extent1"."OIDClient" = "Project1"."OIDClient") OR (("Extent1"."OIDClient" IS NULL) AND ("Project2"."OIDClient" IS NULL))
)
LEFT OUTER JOIN public."TblName" AS "Extent5" ON "Extent2"."OIDName" = "Extent5"."OIDName"
LEFT OUTER JOIN public."TblAddresses" AS "Extent6" ON "Extent2"."OIDAddress" = "Extent6"."OIDAddress"
WHERE (true = "Extent2"."IsPrimary") AND ("Extent1"."OIDFeeEarner" = $1)
2009-07-22 10:54:24 BST DETAIL: parameters: $1 = '16'
The above results were on a slow connection. I tried it directly on the server and the sql took 0.5 seconds, where as the code version still took 15 seconds.
Any thoughts please?
cheers, Damon.