SQL索引

来源:互联网 发布:excel 筛选重复的数据 编辑:程序博客网 时间:2024/05/21 09:34
SQL索引有两种,聚集索引和非聚集索引.
聚集索引就是在数据库被开辟一个物理空间存放他的排列的值,例如1-100,所以当插入数据时,他会重新排列整个整个物理空间,而非聚集索引其实可以看作是一个含有聚集索引的表,他只仅包含原表中非聚集索引的列和指向实际物理表的指针。他只记录一个指针,其实就有点和堆栈差不多的感觉了

REATE [UNIQUE][CLUSTERED | NONCLUSTERED]  INDEX  index_name  

ON {table_name | view_name} [WITH [index_property [,....n]]


DMV,DMV (dynamic management view)动态管理视图和函数返回特定于实现的内部状态数据。


如果在 where 子句中使用参数,也会导致全表扫描。因为SQL只有在运行时才会解析局部变量,但优化程序不能将访问计划的选择推迟到运行时;它必须在编译时进行选择。然 而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。如下面语句将进行全表扫描:

select id from t where num=@num <mailto:num=@num>

可以改为强制查询使用索引:

select id from t with(index(索引名)) where num=@num <mailto:num=@num>


-- 因表过大无法重建索引时,清理表数据。
   或在代码中强制使用索引
2 0