相同的Where子句,不同的选择查询

时间:2017-09-18 15:41:23

标签: sql-server

我正在使用ADO.NET连接MS SQL Server的应用程序,在我的一个用例中,用户可以根据搜索条件选择搜索和查看数据或下载数据。

搜索条件有大约25-30个选项,因此where子句变得复杂。如果用户想要查看数据,我需要选择7列,但如果用户想要下载,那么大约有150列。

从在线搜索中我发现不可能使用相同的where子句进行不同的select查询,只有选项是动态SQL。

我的问题是,从性能的角度来看,哪个选项会更好,要么使用动态SQL,要么只在不使用动态SQL的情况下查看或选择150列的情况下将选择列的数量减少到7。

大多数时候用户会搜索查看数据,下载的次数较少。

提前致谢

2 个答案:

答案 0 :(得分:0)

您可以使用两个存储过程,一个用于返回7列,另一个用于返回150列。他们可以接受搜索条件作为参数,您的代码可以根据用户输入确定使用哪个。

答案 1 :(得分:0)

随着您的应用程序规模不断扩大,拉动所有这些列(取决于它们的类型和内容)可能不如仅选择7列而具有更低的性能。