check约束提升性能的问题
ohfox 2015-01-23 02:55:25 我有一堆的存股票数据的表,一个代码一张表,例如
SH600000,SH600600,SZ000001
每张表中只有一个代码的数据
我在所有表上的Code列都建了约束,例如:CHECK ([Code]='600000') ,约束都是正常使用的
然后建了一个视图,把所有的表union all在一起
这样,当我从视图查询的时候,
select *
from vw_XXX
where Code='600000'
and TIME>....
应该能够通过约束,很快的定位到只扫描SH600000这个表
实际执行计划也是这样,只有一个聚集索引查找,但奇怪的是分析和编译的时间每次都很长:
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 执行时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 47502 毫秒,占用时间 = 87810 毫秒。
SQL Server 分析和编译时间:
CPU 时间 = 47502 毫秒,占用时间 = 87811 毫秒。
(1 行受影响)
SQL Server 分析和编译时间:
CPU 时间 = 0 毫秒,占用时间 = 0 毫秒。
貌似这个执行计划没法缓存住,当我换股票代码,或者哪怕是查询同一个语句,都会经历很长的分析和编译时间
请教这个该怎么处理?