我检查了解决方案文件和项目文件,但找不到与此设置相关的任何内容.当人们从TFS源代码控制中获取最新版本时,他们总是会看到"已加载"状态,这实际上并不是我想要的.
我有这样的查询:
select * from (
select * from TableX
where col1 % 2 = 0
) subquery
where col1 % 4 = 0
Run Code Online (Sandbox Code Playgroud)
实际的子查询更复杂.当我单独执行子查询时,它可以快速返回200个,但是当我执行整个查询时,等待时间太长.
我知道sql server在这里进行了一些优化,并将where语句合并到子查询中,并产生了效率不高的新执行计划.虽然我可以深入了解执行计划并分析为什么,如索引缺失,统计数据陈旧.
但我肯定知道,我的子查询作为BaseTable将只返回一小部分数据,所以我希望所有进一步的过滤或加入只会发生在这些小部分数据中.
我的问题是,我可以强制sql server首先执行子查询,而不关心外部where语句吗?(顺便说一句,TempTable是我的最后一个选择,CTE无效)
据我所知,如果我执行'DBCC FREEPROCCACHE'和'DBCC DROPCLEANBUFFERS',整个服务器的缓冲区将被清除.我想知道是否只有清理指定数据库的缓冲区.因此,对其他数据库的查询不会受到影响.
Sql-Server 2008 R2整理是Chinese_Simplified_Pinyin_100_CI_AS.我用的时候
select 1 where N'?' = N'7'
Run Code Online (Sandbox Code Playgroud)
它输出1,但是当我将操作符更改为 like
select 1 where N'?' like N'7'
Run Code Online (Sandbox Code Playgroud)
它不会输出任何东西.
为什么like操作员行为如此奇怪?我错过了什么?