我正在为我的项目使用LLBLGenPro,我很好奇哪种查询更有效的方法,即连接或预取路径。
我观察到,当我使用预取路径时,它实际上在具有可伸缩结果集的数据库上触发了单独的查询,其中对于join来说,这是带有膨胀结果集的普通联接查询。
我在应用程序中遇到性能问题,即为什么我需要知道最好的做事方式
答案 0 :(得分:0)
我会说这取决于2个表之间的关系。如果它是1-1,那么从数据库的角度来看,联接可能会更有效率(它只是一个查询,没有重复的行)。否则,如果您具有1-m或1-0..1关系,则最好进行预取。 LLBLGen非常聪明,可以根据父查询的结果数量,使用带有子选择或父查询值列表的where in
子句作为2个查询来执行此操作(根据切换到子查询的默认值是50并可以使用DataAccessAdapter.ParameterisedPrefetchPathThreshold
进行更改)。如果您遇到性能问题,那么最好运行跟踪,获取sql并对其进行分析以检查查询计划。