Dynamics crm 如何在Dynamics CRM中访问数据?

Dynamics crm 如何在Dynamics CRM中访问数据?,dynamics-crm,dynamics-crm-4,crm,Dynamics Crm,Dynamics Crm 4,Crm,在平台速度和可维护性方面,在Dynamics CRM 4上访问数据(只读)的最佳方式是什么?这三个我都做了,但我对群众的意见很感兴趣 通过API 直接通过网络服务 通过DB调用视图 …为什么 我的想法通常集中在对视图的DB调用上,但我知道那里有纯粹主义者。考虑到这两个要求,我想说您希望调用视图。精心编制的SQL查询将会飞起来 如果您计划修改数据,则需要通过API,但这不是最快的方法,因为它不允许深入加载实体。例如,如果你想查看客户和他们的订单,你必须单独加载,然后手动加入他们。其中,作为SQ

在平台速度和可维护性方面,在Dynamics CRM 4上访问数据(只读)的最佳方式是什么?这三个我都做了,但我对群众的意见很感兴趣

  • 通过API
  • 直接通过网络服务
  • 通过DB调用视图
…为什么


我的想法通常集中在对视图的DB调用上,但我知道那里有纯粹主义者。

考虑到这两个要求,我想说您希望调用视图。精心编制的SQL查询将会飞起来

如果您计划修改数据,则需要通过API,但这不是最快的方法,因为它不允许深入加载实体。例如,如果你想查看客户和他们的订单,你必须单独加载,然后手动加入他们。其中,作为SQL查询,数据将已联接

尽管TDS流比API和Web服务所使用的SOAP消息要有效得多

更新


关于视图和CRM数据库,我应该指出:CRM没有为自定义实体优化表或视图上的索引(怎么可能?)。因此,如果您有一个卡车装载的实体,并且一直按目的地进行查找,则需要为该属性添加索引。根据您的应用程序,它可能会在性能上产生巨大的差异。

我要补充jake的评论,说直接查询表而不是查询视图(*base&*extensionbase)会更快

按照速度的顺序应该是:

  • 直接表查询
  • 视图查询
  • 过滤器视图查询
  • api调用

  • 直接表格更新:

    我不同意Jake所说的所有更新都必须通过API。正确的说法是,通过API进行更新是唯一受支持的方式。事实上,在一些情况下,直接修改表是最合理的选择:

    • 系统未运行时一次性导入大量数据

    • 跨大量数据修改特定字段

    我同意,只有在API的性能不可接受时,这种直接修改才应该是最后的手段。但是,如果要修改数千条记录上的布尔字段,则对表执行直接SQL更新是一个很好的选择

    相对速度

    我同意XVargas的相对速度

    未过滤视图与表:我发现性能优势不值得手动连接基本表和扩展表

    未过滤视图与过滤视图:我最近正在处理一个复杂的查询,使用过滤视图运行该查询大约需要15分钟。切换到未过滤视图后,此查询在大约10秒钟内运行。查看相应的查询计划,原始查询有8个操作,而针对过滤视图的查询有80多个操作


    未过滤视图与API:我从未将通过API查询与查询视图进行过比较,但我比较了通过API写入数据与直接通过SQL插入数据的成本。通过API导入数百万条记录可能需要几天时间,而使用insert语句执行相同的操作可能需要几分钟。我认为在阅读过程中,差异并没有那么大,但可能仍然很大。

    直接对照表格时要小心。视图强制执行安全性,这不会直接发生在表中。另外,直接对表进行更新是一个非常糟糕的主意。所有更新都必须通过API。如果你有很多数据,那就糟透了,但如果你没有做到这一点,可能会产生不可预测的结果。我从不建议通过表或视图进行任何直接更新或插入。然而,对于大规模应用程序(数百个用户和数百万行),api不会将其用于查询目的。如果您需要强制执行安全角色,那么是的,您必须反对API或过滤视图。这两种方法在提取大量数据时都非常缓慢。