发布网友 发布时间:2022-04-08 22:58
共3个回答
懂视网 时间:2022-04-09 03:19
querySql = rel_project_personservice.GetItems(r => r.Person).Where(w => w.ProjectId == projectId && w.Person.College.University.Province == provinceName);转化的SQL语句:
SELECT "Extent1"."personid", "Extent1"."projectid", "Extent1"."isallotroom", "Extent1"."randomcode", "Extent1"."admissionticket", "Extent1"."pushstatus", "Extent1"."createdtime", "Extent1"."examinationroomid", "Extent2"."id", "Extent2"."name", "Extent2"."idnumber", "Extent2"."gender", "Extent2"."mobile", "Extent2"."idcard", "Extent2"."email", "Extent2"."degree", "Extent2"."nation", "Extent2"."major", "Extent2"."graduatedate", "Extent2"."livingcity", "Extent2"."accountlocation", "Extent2"."expectcity", "Extent2"."enterprisenature", "Extent2"."expectindustry", "Extent2"."expectjob", "Extent2"."collegeid", "Extent2"."status", "Extent2"."signuptype", "Extent2"."createdtime" AS "createdtime1", "Extent2"."modifiedtime", "Extent2"."createdby", "Extent2"."modifiedby", "Extent2"."classname", "Extent2"."idcardtype", "Extent2"."birthday", "Extent2"."xzid", "Extent2"."szid", "Extent2"."testcity", "Extent2"."graduateschool", "Extent2"."degreeid", "Extent2"."nationid", "Extent2"."majorid", "Extent2"."accountlocationid", "Extent2"."livingcityid", "Extent2"."expectcityid", "Extent2"."enterprisenatureid", "Extent2"."expectindustryid", "Extent2"."expectjobid", "Extent2"."testcityid" FROM "public"."rel_project_person" AS "Extent1" INNER JOIN "public"."person" AS "Extent2" ON "Extent1"."personid" = "Extent2"."id" LEFT OUTER JOIN "public"."college" AS "Extent3" ON "Extent2"."collegeid" = "Extent3"."id" LEFT OUTER JOIN "public"."university" AS "Extent4" ON "Extent3"."universityid" = "Extent4"."id" WHERE "Extent1"."projectid" = 11 AND ("Extent4"."province" = ‘北京‘ OR "Extent4"."province" IS NULL )
linq转出来的语句在数据库上执行,花费40多秒:
Total query runtime: 40.1 secs 检索到 100127 行。
实现同样的业务,自己写的sql语句:
Select C.UNIVERSITYID,c.name,count(p.id) from Person p join Rel_Project_Person R on P.id =R.PersonID join College C on p.CollegeID = C.id where R.ProjectId =11 and C.universityid IN ( Select id from University where Province = ‘北京‘ ) group by C.UNIVERSITYID,c.name
执行自己写的sql,花费不到1秒:
Total query runtime: 680 msec 检索到 2 行。
不要轻易使用linq代替sql
标签:
热心网友 时间:2022-04-09 00:27
LINQ,语言集成查询(Language INtegrated Query)是一组用于c#和Visual Basic语言的扩展。它允许编写C#或者Visual Basic代码以查询数据库相同的方式操作内存数据。热心网友 时间:2022-04-09 01:45
你应该先搞清楚Linq 与Linq To Sql 和Linq to Entity 之间的区别....