【发布时间】:2015-01-29 18:10:15
【问题描述】:
有一个需求,我需要根据用户输入构建动态查询并发送结果集中的记录数。
因此,我需要确定 6 个表进行内部连接,其余表连接将基于用户输入,这应该以性能为导向。
这是要求
select count(A.A1) from table A
INNER JOIN table B on B.B1=A.A1
INNER JOIN table B on C.C1=B.B1
INNER JOIN table D on D.D1=C.C1
INNER JOIN table E on E.E1=D.D1
INNER JOIN table F on F.F1=E.E1
现在如果用户在 UI 中选择了一些值,那么必须执行查询
select count(A.A1) from table A
INNER JOIN table B on B.B1=A.A1
INNER JOIN table B on C.C1=B.B1
INNER JOIN table D on D.D1=C.C1
INNER JOIN table E on E.E1=D.D1
INNER JOIN table F on F.F1=E.E1
INNER JOIN table B on G.G1=F.F1
Where G.Name like '%Germany%'
用户可以发送 1-5 个选项,并且必须构建查询并相应地发送结果集
因此,如果我先添加所有连接,然后根据选择添加 where 子句,那么查询将很容易并达到目的,但如果用户没有选择任何查询,那么我正在为用户选择创建不必要的连接。
那么,提前编写所有连接然后过滤它或按需连接和使用动态查询的过滤器会更好。
如果有人能提供有价值的意见,那就太好了。
【问题讨论】:
-
您试图通过缩进所有段落来使您的消息具有良好的格式。您不知道的是,如果您使用 4 个或更多字符缩进,那么 SO 会将其视为代码,并且您会得到一种糟糕的格式。我已为您重新格式化,但下次考虑。
-
你把表名弄乱了,没有表C或G。
标签: sql sql-server-2012