在Dynamics CRM 4上,平台速度和访问数据(只读)的可维护性方面的最佳方法是什么?我已经做了三个,但对人群的意见感兴趣。
......为什么?
我的想法通常围绕数据库调用视图,但我知道那里有纯粹主义者。
答案 0 :(得分:2)
考虑到这两个要求我会说你想调用这些观点。正确制作的SQL查询将会飞行。
如果您计划修改数据,则需要通过API,但它不是最快的方法,因为它不允许深度加载实体。例如,如果您想查看客户及其订单,则必须单独加载它们,然后手动加入它们。 SQL查询的位置已经加入了数据。
没关系,TDS流比API和API使用的SOAP消息更有效。 web服务。
<强>更新强>
我应该指出一般情况下的观点和CRM数据库:CRM不会优化自定义实体的表或视图的索引(怎么可能?)。因此,如果您有一个卡车装载实体,您按目的地查找,您将需要为该属性添加索引。根据您的应用程序,它可能会对性能产生巨大影响。
答案 1 :(得分:1)
我会添加到jake的评论中说,直接查询表格而不是视图(* base&amp; * extensionbase)会更快。
按照速度顺序:
答案 2 :(得分:0)
直接表格更新:
我不同意杰克所有更新都必须通过API。正确的说法是,通过API是唯一支持的方式来进行更新。实际上有几个直接修改表的实例是最合理的选择:
在系统未运行时,一次导入大量数据。
修改大量数据中的特定字段。
我同意,当API的性能不可接受时,这种直接修改应该是最后的手段。但是,如果要在数千条记录上修改布尔字段,则对表进行直接SQL更新是一个很好的选择。
相对速度
就相对速度而言,我同意XVargas。
未过滤的视图与表:我没有发现性能优势值得手动加入基表和扩展表的麻烦。
未过滤的视图与过滤的视图:我最近使用的是一个复杂的查询,使用过滤后的视图运行大约需要15分钟。切换到未过滤的视图后,此查询在大约10秒内运行。查看相应的查询计划,原始查询有8个操作,而针对筛选视图的查询有80多个操作。
Unfiltered Views vs API:我从未将查询通过API与查询视图进行比较,但我比较了通过API编写数据与直接通过SQL插入的成本。通过API导入数百万条记录可能需要几天时间,而使用insert语句的相同操作可能需要几分钟时间。我认为在阅读过程中差异不是很大,但可能仍然很大。