回答

收藏

在何处子句中选择具有许多离散值的选择

技术问答 技术问答 280 人阅读 | 0 人回复 | 2023-09-12

给定一个像表
, t% C% _9 M' y/ b7 G& s8 KCREATE TABLE [dbo].[Article](    [Id] [int] NOT NULL,   [CategoryId] [int] NOT NULL,   [Text] [nchar](10) NOT NULL)允许用户选择一个或多个类别来查看他们的数据。通常,他们会选择1-20类。为了适应这一点,我生成了类似于以下内容的参数化查询:9 |3 W/ T7 t3 k) R" o; M
SELECT * FROM ArticleWHERE CategoryId IN (@c1,@c2,@c3,@c4,@c5)然而,在一些罕见的用例中,用户可以合法地选择数百个类别。这让我发现了Linq-to-
- }8 |: R+ p' O5 H2 XEntities我通过形成类别代码的范围来解决限制。不幸的是,这只能解决问题,因为它可以传递给SQL
' r9 h' f- Z3 T3 x  s; {Server限制了查询的大小。' ^% w0 W1 j0 O. n! r
我想重建这个查询,以避免任何硬限制。我的第一个想法是创建一个包含请求类别的临时表,并执行内部联系,以取代它IN(...)然而,我知道临时表可能会很慢。
# U0 ?, {, m: z- M是否有更优雅、/或更有效的解决方案来解决这个问题?& {" u7 X2 x5 V- Q* _
                                                                4 O6 M7 ^5 P2 |3 ?
    解决方案:
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则