SELECT * FROM student
--
SELECT * FROM sys.sysindexes
/*
在sysobjects系统表中存储着数据库的所有对象,每个对象都有一个唯一的id号进行标识.
object_id就是根据对象名称返回该对象的id.反之,object_name是根据对象id返回对象名称.
select object_id(对象名)等同于:
select id from sysobjects where name=对象名
注: 如果参数是一个临时表名,则必须指定所属数据库.你举出的OBJECT_ID('Tempdb..##flowcount') 就属于这
种情况.说明这个临时表是数据库Tempdb的.
select object_name(id号)等同于:
select name from sysobjects where id=id号
*/
--
SELECT * FROM sys.sysindexes WHERE id=object_id('student')
--
SELECT * FROM sysobjects WHERE id = object_id('student')
--
SELECT * FROM sysobjects WHERE name = OBJECT_NAME('2105058535')
/*
索引知识(可参考该网址 http://www.cnblogs.com/soundcode/p/4458974.html )
创建索引语法
CREATE [索引类型] INDEX 索引名称
ON 表名(列名)
WITH FILLFACTOR = 填充因子值0~100
GO
索引分类
1.唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)
2.主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)
3.聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
4.非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引
*/
--检测是否已经存在名字为IX_stuName的索引
IF EXISTS(SELECT * FROM sysindexes WHERE name = 'IX_stuName')--检测名字为IX_stuName的索引是否存在,索引存放在sysindexes中
DROP INDEX student.IX_stuName --如果存在则删除
/*
为姓名列创建非聚集索引,填充因子为%(百分比)
*/
--创建索引
CREATE NONCLUSTERED INDEX IX_stuName --创建一个非聚集索引
ON student(stuName) --为student表的stuName字段创建索引
WITH FILLFACTOR = 60 -- 填充因子为60%
GO
STATISTICS_NORECOMPUTE
/*
指定按照某个索引进行查询如下
SELECT 字段1,字段2 FROM 表名 WITH (INDEX = 索引名) WHERE 查询条件
SELECT 字段1,字段2 FROM 表名 WITH (INDEX(索引名)) WHERE 查询条件
指定按'IX_stuName'索引查询
*/
--指定按索引IX_stuName进行查询
SELECT * FROM student WITH(INDEX(IX_stuName))
WHERE stuName = '令狐冲'
--指定按索引IX_stuName进行查询
SELECT * FROM student WITH(INDEX = IX_stuName)
WHERE stuName = '令狐冲'
--
SELECT * FROM student
GO