我有以下表结构:替代嵌套的SELECT语句
目前正在过滤的用户是通过非常复杂的嵌套的SQL查询(此外,它通过LINQ的是自动生成的)来实现。我看起来大概是这样的:
SELECT FROM (SELECT FROM (SELECT FROM (infinity here...))))
有没有简化过滤过程的好方法?
请注意,有不同的特征类型。下面是子查询条件的样本:
... WHERE cv.Text like '%aaa%' AND c.Id = 5
... WHERE cv.ImageId IS NOT NULL AND c.Id = 10
... WHERE cv.Number > 5 AND c.Id = 33
等等
会明白任何帮助和想法(DB改变结构,改变工艺,等...),谢谢!
如果它是由LINQ生成的,那么为什么你会关心它是否显得复杂?数据库应该是它看起来是3NF的。您可能在ImageId和AllowedValueId上缺少FK。 – Paparazzi
有FKs,我只是不需要将它们添加到数据库图来简化视图。其实我并不是100%信任LINQ,我认为自动生成的SQL脚本(以后称为'exec')远不是最佳性能。也许某些DB视图或存储过程会提供更好的结果。 –
你的LINQ查询在哪里? – christiandev