摘要:
微软推荐为每一个表建立一个聚集索引,但是由于sqlserver简单易用,而且很多人并不了解聚集索引,非聚集索引这些东西,所以如果sqlserver不在主键上建立聚集索引的话,可能会导致大部分的表都是堆结构,而堆结构是乱序存放的,检索很不方便,空间也不好管理,所以微软就来了个强硬的,如果不在建表的同事创建聚集索引,sqlserver会自动在主键上面建聚集索引。 其实在网上的大部分资料都不推荐聚集索引建立在主键上,觉得这是浪费,理由是聚集索引查询比较快,应该建立在经常查询和具有同一属性值的列上(比如分类),这个好像说的过去。 不过就本人目前处理过的数据(亿级),还没有充分的证据表明聚集建立... 阅读全文
摘要:
最近突然想到这个问题,记录下来巩固一下自己的知识。 表,临时表,表变量,相信很多人都用过,truncate table @表变量 会报错,相信很多人也遇到过,不过真正去思考为什么的人可能少之又少,毕竟大多数情况下,我们大部分的人只需要会用,而不需要去知道为什么,更何况国内的项目总是那么紧张,本来还有的那点求知欲,可能也会被任务,绩效考核冲跑了。 那到底为什么表变量不能truncate呢,这就需要了解truncate这个命令的本质,truncate table 是通过释放存储表数据所用的数据页来删除数据。而表变量的数据是保存在内存中的,而非磁盘中,那么就truncate table 试图... 阅读全文