摘要:
一些问题: 1.堆表中插入数据和聚集表中插入数据的区别,聚集表中根据主键导致数据插入位置不同会产生什么结果(数据页、索引页、页分裂) 2.即使有索引的情况,并且可以通过索引查找+书签查找得到数据,根据开销系统有时候也会表扫描。 即,表扫描和索引扫描,索引查找的性能和选择有时候是不确定的 应该尽量避免 阅读全文
摘要:
避免书签查找 可以将查询需要的列加入非聚集索引中 联合索引会导致所有的非聚集索引页中都会冗余一份列的数据,尤其是当这些列不作为条件,只作为返回值时候,是一种浪费 因此可以 选择将查询结果需要的列加入覆盖索引 这时候 覆盖的列 只会存在于叶节点中,定位到索引后,直接从页节点返回数据,避免再根据RID 阅读全文
摘要:
USE IndexDB GO SELECT * INTO SalesOrderheader FROM AdventureWorks2008r2.Sales.SalesOrderheader GO --Unique Clustered index CREATE UNIQUE CLUSTERED IND 阅读全文
摘要:
删除聚集索引 DROP INDEX CIX_Employee001_Id ON Employee001 索引情况 SELECT database_id, index_id, index_type_desc, index_depth, index_level, page_count FROM sys. 阅读全文
摘要:
如果存在聚集索引并且查找的列不在 非聚集索引的键列中 而在没有聚集索引的表中 使用RID Lookup 书签查找可能因为开销过大导致一些查询直接进行表扫描 聚集索引所有数据都在索引中(数据页也是索引的一部分),因此可以直接通过聚集索引找到所有的列 定位到索引,也就意味着数据找到了 但是非聚集索引定位 阅读全文
摘要:
堆表中 1.没有聚集索引页 2.数据页中的数据都是无序的 聚集表中 1.数据页都是有序的,按照索引键列排序 2.索引页指向数据页,数据页本身也是聚集索引的一部分 3.数据页的IndexLevel为0,索引页依次为1 2 3 。。。,最大的IndexLevel的索引页只有一个,即根 阅读全文
摘要:
建立非聚集索引 CREATE NONCLUSTERED INDEX NCIX_Employee001_Department_Organization ON Employee001(Department,Organization); ALTER INDEX NCIX_Employee001_Depar 阅读全文
摘要:
创建聚集索引并重新组织 CREATE UNIQUE CLUSTERED INDEX CIX_Employee001_Id ON Employee001(Id); ALTER INDEX CIX_Employee001_Id ON Employee001 REORGANIZE; 索引情况 SELECT 阅读全文
摘要:
初始化 --1.创建数据库 IF DB_ID('IndexDB')IS NULL BEGIN CREATE DATABASE [IndexDB] END ALTER DATABASE [IndexDB] SET RECOVERY SIMPLE; GO --2.创建表 2.1 数据表 CREATE T 阅读全文
摘要:
堆表查询 首先在没有任何索引的情况下查看 分页情况 SELECT database_id, index_id, index_type_desc, index_depth, index_level, page_count FROM sys.dm_db_index_physical_stats(DB_I 阅读全文
摘要:
占坑 TODO 阅读全文