sql server 索引基础知识系列中第篇讲记录数基格式里讲解数库读存单元:数页数页8k
数库说会次数页变化存硬盘变化达定数量级会作操作 时候数库数页作操作单元64k数(8数页区)作操作单元
区理空间基单位区八物理连续页( 64 kb)意味着 sql server 数库中 mb 16 区
空间分配更效sql server 会区分配包含少量数表sql server 两种类型区:
统区单象区中 8 页属象
混合区八象享区中八页页象
通常混合区新表索引分配页表索引增长 8 页时变成统区进行续分配果现表创建索引该表包含行足索引中生成 8 页该索引分配统区进行
会样呢?
实简单:
读写 8kb 时间读写 64 kb时间相
8 kb 64 kb 范围单磁盘 io 传输操作花时间磁盘取数臂读写磁头运动时间
数学讲需传输 64 kb sql 数时
执行 64 kb 磁盘传输益分成数64k操作
64 kb 传输基 8 kb 传输样快次传输 sql server 数 8 kb 传输 8 倍
通实例 and 操作符时候常见种情况面表
create table [dbo][member]( [member_no] [dbo][numeric_id] identity(11) not null [lastname] [dbo][shortstring] not null [firstname] [dbo][shortstring] not null [middleinitial] [dbo][letter] null [street] [dbo][shortstring] not null [city] [dbo][shortstring] not null [state_prov] [dbo][statecode] not null [country] [dbo][countrycode] not null [mail_code] [dbo][mailcode] not null [phone_no] [dbo][phonenumber] null [photograph] [image] null [issue_dt] [datetime] not null default (getdate()) [expr_dt] [datetime] not null default (dateadd(year1getdate())) [region_no] [dbo][numeric_id] not null [corp_no] [dbo][numeric_id] null [prev_balance] [money] null default (0) [curr_balance] [money] null default (0) [member_code] [dbo][status_code] not null default (' '))
表具备面四索引:
索引名 细节 索引列
member_corporation_link nonclustered located on primary corp_no
member_ident clustered unique primary key located on primary member_no
member_region_link nonclustered located on primary region_no
memberfirstname nonclustered located on primary firstname
执行面sql查询时候
select mmember_no mfirstname mregion_nofrom dbomember as mwhere mfirstname like 'k' and mregion_no > 6 and mmember_no < 5000go
sql server 会根索引方式优化成面方式执行
select amember_noafirstnamebregion_nofrom(select mmember_no mfirstname from dbomember as m where mfirstname like 'k' and mmember_no < 5000) a 查询直接 memberfirstname 非聚集索引非聚集索引覆盖查询列 实际执行时需 逻辑读取 3 次
(select mmember_no mregion_no from dbomember as mwhere mregion_no > 6) b
查询直接 member_region_link 非聚集索引非聚集索引覆盖查询列 实际执行时需 逻辑读取 10 次
where amember_no bmember_no
信两sql 执行计划逻辑读信息样
实面sql果优化成面方式实际逻辑读消耗样sql server 会优化成面方式 and 操作符优化外原
126 数 16 数找交集速度 152 数 13 数找交集速度慢
select amember_noafirstnamebregion_nofrom(select mmember_no mfirstname from dbomember as mwhere mfirstname like 'k' 126 数) a
(select mmember_no mregion_no from dbomember as mwhere mregion_no > 6 and mmember_no < 5000 13 * 1 2 数) bwhere amember_no bmember_no
然学sql 优化话会查询语句中功指定查询索引进行
面查询语句
select mmember_no mfirstname mregion_nofrom dbomember as m with (index (0))where mfirstname like 'k' and mregion_no > 6 and mmember_no < 5000go
select mmember_no mfirstname mregion_nofrom dbomember as m with (index (1))where mfirstname like 'k' and mregion_no > 6 and mmember_no < 5000goselect mmember_no mfirstname mregion_nofrom dbomember as m with (index (membercovering3))where mfirstname like 'k' and mregion_no > 6 and mmember_no < 5000goselect mmember_no mfirstname mregion_nofrom dbomember as m with (index (memberfirstname member_region_link))where mfirstname like 'k' and mregion_no > 6 and mmember_no < 5000go
里 index 计算符 0 1 指定者索引名字 0 1 意义:
果存聚集索引 index(0) 强制执行聚集索引扫描index(1) 强制执行聚集索引扫描查找(性高种)
果存聚集索引 index(0) 强制执行表扫描index(1) 解释错误
总结知识点:
简单说理解:sql server 条查询语句会根实际索引情况(sysindexes
系统表中存储信息)分析种组合成然选择认成种作实际执行计划
成代价计算组成部分逻辑io数量特单表查询
and 操作满足条件样常会求数集作交集数集越数集交集计算越节省成
项目中竟然出现滥聚集索引问题没培训基础索引意义代价场景非常失误篇博客角度罗列索引基础知识
索引意义
索引数库中作类似目录书籍中作提高查找信息速度
索引查找数需整表进行扫描快速找需数
索引代价
索引需占数表外物理存储空间
创建索引维护索引花费定时间
表进行更新操作时索引需重建样降低数维护速度
创建索引列
键
外键表联接操作中常列
常查询字段建立索引
创建索引列
少查询中引
包含较少惟值
定义 textntext 者 image 数类型列
heapsstaging data选择没index时
excellent for high performance data loading (parallel bulk load and parallel index creation after load)
excellent as a partition to a partitioned view or a partitioned table
聚集索引提高性方法前面篇博客中分提面简单纲细节请参前面篇博客
时创建聚集索引?
clustered index会提高数table性尤满足条件时:
独特 狭窄 静止: 重条件
持续增长增加例:
identity
date identity
guid (only when using newsequentialid() function)
聚集索引唯性(独特型问题)
聚集索引b+树结构叶子节点必须指具体数果建立聚集索引列唯指定创建聚集索引非唯聚集索引会情况:
果未 unique 属性创建聚集索引数库引擎 表动添加四字节 uniqueifier 列必时数库引擎 行动添加 uniqueifier 值键唯列列值供部户查访问
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档