日度归档:2018年8月6日

mssql sqlserver 脚本不走索引的情况说明


摘要:
下文分析几种sql脚本不走索引的情况,如下所示
以下所描述的情况,在sqlserver 2008 R2中,会走索引扫描操作,用户需根据实际情况,进行相关测试



一、sql脚本索引异常的情况说明

通常sql脚本不走索引分为以下几种情况:
1.查询条件的数据类型异常,sql内部无法采用索引查找操作
2.列在检索时,进行函数运算,sql会认为是新列,既不走索引
3.统计信息异常,导致sql引擎误判信息,既不走索引
4.sql引擎预估走索引无效率提升时,既不走索引
5.列上有值为null ,当使用 count(*)不走索引查找

举例说明常见不走索引的操作:

   select count(*) from [表名]     --实际测试 走索引扫描
  select count(*) from  [表名]   where left([列名],1) >1  --走索引扫描

mssql sqlserver 查看、新增、删除索引的方法分享


摘要:
下文系统的讲述sqlserver中索引的查看 新增 删除的方法,如下所示:



一、索引功能说明

索引列通常是有序存储,当我们检索列上的数据时,数据库将利用一些既定的索引规则,快速的查找出相关数据。
例:
新建表 testA,testB,testC 分别包含 keyIdA,keyIdB,keyIdC, 每张表拥有100条数据,分别存储相同的数据集合
—当无索引的情况下检索数据,如下
select keyIdA,keyIdB,keyIdC from testA,testB,testC where keyIdA =keyIdB and keyIdB = keyIdC
—无索引时,首先需查找出三张表的所有组合,然后再运用条件进行匹配,会产生 100*100*100中组合情况,此查询会非常慢,
—当我们对三张表建立索引后,查询速度将变的超快
每次查询都会采用直接定位的方式,使数据检索速度加快


二、索引创建方法

CREATE INDEX [索引名称] ON [表名](列集合)
CREATE UNIQUE INDEX [索引名称] ON [表名] (列集合)
ALTER TABLE [表名] ADD PRIMARY KEY ([列名]) —创建主键

三、删除索引的方法分享

DROP INDEX [索引名] ON [表名]

四、查看索引的方法

  select b.name  from sys.sysobjects a, sys.sysindexes b 
 where a.id = b.id  and a.name = '表名'  

举例说明:

 create table test(keyId int not null)

go
CREATE INDEX ix_name ON test (keyId) --索引建立
CREATE UNIQUE INDEX ix_2 ON test (keyId)--索引建立
ALTER TABLE test ADD PRIMARY KEY (keyId)--添加主键
DROP INDEX ix_name ON test  --删除索引
 go
 ---表索引查看
select b.name  from sys.sysobjects a, sys.sysindexes b 
 where a.id = b.id  and a.name = 'test'  


go 
truncate table test
drop     table test

mssql_sqlserver_索引相关知识 mssql_sqlserver_索引相关知识[/captio