微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

查询中的过多访问限制 (1C:Enterprise 8.3.17.1851)

如何解决查询中的过多访问限制 (1C:Enterprise 8.3.17.1851)

1C:企业平台:8.3.17.1851

对于文档,配置了记录级安全性 (RLS)。文档有一个表格部分,其中包含指定为文档特征的附加属性

在具有附加属性的动态列表中呈现文档时,数据库服务器收到以下查询

SELECT TOP 45 T1.Ref
FROM dbo.Document.Document1 T1 
LEFT OUTER JOIN 
 (
  SELECT T11.Ref AS Q_001_F_000RRef,T11.Value AS Q_001_F_001RRef,T11.Value AS Q_001_F_002_TYPE,T11.Value AS Q_001_F_002_L,T11.Value AS Q_001_F_002_N,T11.Value AS Q_001_F_002_T,T11.Value AS Q_001_F_002_S,T11.Value AS Q_001_F_002_RTRef,T11.Value AS Q_001_F_002_RRRef 
  FROM dbo.Document.Document1.AdditionalAttributes T11 
  INNER JOIN dbo.Document.Document1 T12 ON T11.Ref = T12.Ref
  // query constraint description
)
// query constraint description

事实证明,平台多次将查询约束应用于主表。

对于非平凡的查询约束,这可能会导致查询处理性能显着下降。您在查询中包含的其他属性越多,您遇到的性能下降就越严重。

为什么平台在将主表的内连接或左外连接应用到表节时,不能避免添加过多的访问约束?

解决方法

在一般情况下,构造 从 dbo.Document.Document1 T1 LEFT OUTER JOIN dbo.Document.Document1 T2 ON 假设系统可以从 T1 和 T2 中选择不同的记录。 因此,访问约束应独立应用于 T1 和 T2。 在某些情况下,根据约束类型,平台可以优化查询。 可能在您描述的场景中,查询无法优化。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。