LightSwitch HTML客户端的Tables_SingleOrDefault和Tables.filter操作

时间:2015-06-18 13:31:12

标签: visual-studio-lightswitch lightswitch-2013

我们正在使用Visual Studio 2013版本的LightSwitch,并且在我们的HTML客户端屏幕中有许多区域,我们使用以下方法检索具有特定ID的实体: -

myapp.activeDataWorkspace.ApplicationData.Tables.filter("Id eq " + msls._toODataString(idToFind, ":Int32")).execute()

由于我们有兴趣改善这些屏幕的性能,我想知道是否有人知道以下替代方法是否会对速度产生任何影响? : -

myapp.activeDataWorkspace.ApplicationData.Tables_SingleOrDefault(idToFind).execute()

虽然第二种方法似乎在这种情况下更合适,但由于我们有大量的前一种方法,我想在启动它之前量化这种变化的价值(并且需要重新测试)

2 个答案:

答案 0 :(得分:1)

这两种方法都会产生SQL并在服务器上执行它。 SQL应该相似/相同,性能几乎相同。如果你想看到正在生成的SQL,我建议你打开" SQL Server Profiler"并运行跟踪!跟踪还将显示执行时间。附注:您的性能提升将来自正确配置的表索引。

答案 1 :(得分:1)

我知道它的旧问题,但我想补充一些信息...

即使两者都被转换为SQL查询并在SQL Server上执行,性能上的差异将与lightSwitch(oData v3)生成语句的方式有关。

考虑以下因素;

1-从表中选择*,其中colA(' foo')

2- select * from Table,其中colA =' foo' TOP(1)

一般来说,如果colA是表中的主键,那么SQL将在第二次匹配后停止搜索,如果只想检索一个,那么等于更好的性能......

您可以在文件msls-2.5.2.js第6803行到第6900行跟踪每个生成的链接查询。