使用许多 SQL CONTAINS 命令而不是仅使用一个命令会降低性能吗?

Will I loose performance with many SQL CONTAINS command instead of only one?

我正在 SQL 服务器上执行一个带有全文搜索的命令,但我在构建这样的动态查询时遇到了问题:

CONTAINS (MyTable, '@param1 AND @param2 AND NOT @param3')

所以我找到了一个替代方法来制作一系列 CONTAINS 命令,如下所示:

CONTAINS (MyTable, @param1) 
AND CONTAINS (MyTable, @param2) 
AND NOT CONTAINS (MyTable, @param1)

我的问题是:使用许多 CONTAINS 命令而不是像第一个示例那样只执行一个 SQL 命令是否有问题?

我不是 SQL 服务器专家,但我认为 SQL 服务器应该足够聪明,以这种方式编译它,它会有最好的性能。

我们不是在谈论像 SubqueryJoin 这样的逻辑变化,它们会以不同的方式编译。第二个示例中的逻辑与第一个示例中的逻辑完全相同。所以你可以做你的选择。

如果你想通过编译时间,你应该使用stored procedure。您还可以获得一个 Query Execution Plan 来查看您是否需要在这部分查询中花费太多。