我有以下查询(通过linq
构建),这是Count
中Table1
元素的简单Table2
,它们与SELECT
1 AS [C1],
cast(1 as bit) AS [C2]
FROM [dbo].[Table1] AS [Extent1]
WHERE ( EXISTS (SELECT
1 AS [C1]
FROM [dbo].[myFunction]([Extent1].[Table1Id]) AS [Extent2]
WHERE ([Extent2].[Table2Id] IN (cast('02df5a88-b189-4218-8819-2d0a35887d26' as uniqueidentifier))) AND ([Extent2].[Table2Id] IS NOT NULL)
))
中的条目有某种关联。
此查询运行大约2分钟。
Id
如果我针对[Extent2].[Table2Id]
添加要检查的其他Contains
,则查询会在0.5秒内完成。
我已经尝试将IN(...)
- 调用(转换为SQL ==
)更改为Id
,以防只提供一个myFunction
- 但仍然相同。
所以,现在,我正在添加转储ID,以防只有一个给定。
我在这里做错了什么?
Table2
SQL函数返回Table1Id
的列表 - 给定Table2.ParentId = Table2.Id
的条目,这些条目是自引用的,以便创建父子关系,例如: var ids = new Guid[] {new Guid("14763ded-3a38-43d8-a3e4-b1eb17870136"), Guid.NewGuid()};
Table1.Count(f => (dbContext.myFunction(f.Table1Id)).Any(c => (ids.Contains(c.Table2Id))));
。
这是我使用的linq查询(简化):
def groupl1(x):
return tf.reduce_sum(tf.sqrt(tf.to_float(x.get_shape()[1])) * tf.sqrt(tf.reduce_sum(x ** 2, axis=1)))