小编Kai*_*Kai的帖子

导入整个表时的“SQL 命令”与“表或视图”

使用 OLEDB 源代码编辑器时,当您想要整个表时,使用“Sql 命令”而不是“表或视图”是否有性能优势或差异?

这是这个问题的一个变体,其中提问者正在谈论他们只想要表中的一个一些列的场景- 在这种情况下,使用“Sql 命令”是有好处的,因为 aselect * from仍在后台执行使用“表格或视图”时,即使列未选中。

我还在MSDN 博客上找到了这个条目,它指出在查看视图时效率更高,因为使用OpenRowsetaSET ROWCOUNT 1会导致低效的查询计划被缓存并重用于实际执行。

但是,如果您在表中加载并想要每一列,与“表或视图”相比,使用“Sql 命令”选项还有优势吗?

sql-server ssis sql-server-2012 ssis-2012

5
推荐指数
1
解决办法
216
查看次数

使用 SELECT 列表中的表达式来精简 CASE 语句

我有一个查询,我通过重写工作-它有一个巨大的一堆case文中陈述select列表中的所有基本是这样的:

select
    Column1 = 
        case when (Something = 2) and (SomethingElse is null) and (AnotherThing in (1, 2))
        then 1 
        else 0
        end,
    Column2 = 
        case when (Something = 3) and (SomethingElse is not null) and (AnotherThing in (2, 3))
        then 1 
        else 0
        end,
    ...
Run Code Online (Sandbox Code Playgroud)

特别注意when <expressions> then 1 else 0所有这些通用的“ ”逻辑。

它看起来真的很臃肿和冗长,是对case语句的粗暴使用- 我的编程大脑告诉我这可以通过一些基本的二进制&逻辑更简洁地实现,case完全删除:

select
    Column1 = (Something = 2) & (SomethingElse is null) & …
Run Code Online (Sandbox Code Playgroud)

sql-server sql-server-2008-r2 select case

2
推荐指数
1
解决办法
545
查看次数