3

就平台速度和访问 Dynamics CRM 4 上的数据(只读)的可维护性而言,最佳方式是什么?我已经完成了所有三个,但对人群的意见很感兴趣。

  • 通过 API
  • 直接通过网络服务
  • 通过数据库调用视图

……为什么?

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

4

3 回答 3

2

鉴于这两个要求,我会说您要调用视图。精心设计的 SQL 查询将飞速发展。

如果您打算修改数据,则需要通过 API,但这不是最快的方法,因为它不允许深度加载实体。例如,如果您想查看客户及其订单,则必须单独加载两者,然后手动加入。SQL 查询已经将数据连接到哪里。

没关系,TDS 流比 API 和 Web 服务使用的 SOAP 消息更有效。

更新

我应该指出一般的视图和 CRM 数据库:CRM 不会优化自定义实体的表或视图上的索引(怎么可能?)。因此,如果您有一个始终按目的地查找的卡车装载实体,则需要为该属性添加索引。根据您的应用程序,它可能会对性能产生巨大影响。

于 2010-03-29T14:29:38.467 回答
1

我将通过直接查询表而不是视图(*base 和 *extensionbase)来添加 jake 的评论,这样会更快。

按照速度顺序是:

  1. 直接表查询
  2. 查看查询
  3. 过滤视图查询
  4. api调用
于 2010-03-29T15:58:48.507 回答
0

直接表更新:

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

  • 在系统不运行时一次性导入大量数据。

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

我同意这种直接修改应该只在 API 的性能不可接受的情况下作为最后的手段。但是,如果您想修改数千条记录的布尔字段,直接对表执行 SQL 更新是一个不错的选择。

相对速度

就相对速度而言,我同意 XVargas。

未过滤视图与表:我还没有发现值得手动加入基本表和扩展表的麻烦的性能优势。

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

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

于 2014-03-21T22:32:26.857 回答