我正在学习表变量的更多细节.它表示临时表总是在磁盘上,表变量在内存中,也就是说,表变量的性能优于临时表,因为表变量比临时表使用更少的IO操作.
但有时,如果表变量中的记录太多而无法包含在内存中,则表变量将像临时表一样放在磁盘上.
但我不知道"太多记录"是什么.100,000条记录?或1000,000条记录?我怎么知道我正在使用的表变量是在内存中还是在磁盘上?SQL Server 2005中是否有任何函数或工具来测量表变量的大小或让我知道何时将表变量从内存放入磁盘?
我倾向于http标头,我想在"缓存控制"字段上运行测试,所以我构建了一个只有一个默认页面的asp.net网站.在这个页面我正在测试"缓存控制" "下面的Page_Load中包含代码的字段:
Response.AddHeader("Cache-Control","max-age=3600");
Response.Write(new Random().Next(0,9999).ToString());
Run Code Online (Sandbox Code Playgroud)
每当我刷新页面时,我认为它会给我相同的数字,因为当它收到"Cache-Control:max-age = 3600"标题时,页面被浏览器缓存在本地,但令我惊讶的是,它给了我每次按下刷新按钮(不是ctrl + f5)时都会有一个新的数字,就像缓存控件根本不起作用一样.
我使用fiddler捕获请求/响应信息,并且在请求头中看到"Cache-Control:max-age = 0",而响应头中的"Cache-Control:max-age = 3600".似乎"Cache-Control:max-age = 0"会阻止缓存,但为什么呢?我错过了什么吗?
可能重复:
反射真的很慢吗?
人们经常告诉我,反思的表现很差,但为什么呢?我搜索了有关反射的细节,想知道它的机制和"表现不佳"的秘密,但没有任何用处.有人可以告诉我关键或一些信息吗?越详细越好.