sql索引查询语句(查询索引的sql语句)
SQL表字段如何建立索引?难道就是添加SQL查询语句?
1、创建测试表,
create table test_index(id varchar2(20), v_date date);
2、将id字段,添加索引;
-- Create/Recreate indexes
create index idx_test_index_id on TEST_INDEX (id);
3、编写sql,查看系统视图,查找该索引是否存在;
select * from user_indexes t where index_name = upper('idx_test_index_id');
4、执行sql语句,并查看执行计划,可以发现索引已经起了作用;
创建索引的sql语句怎么写
语法:
CREATE?[索引类型]?INDEX?索引名称
ON?表名(列名)
WITH?FILLFACTOR?=?填充因子值0~100
GO
/*实例*/
USE?库名
GO
IF?EXISTS?(SELECT?*?FROM?SYSINDEXES?WHERE?NAME='IX_TEST_TNAME')--检测是否已经存在IX_TEST_TNAME索引
DROP?INDEX?TEST.IX_TEST_TNAME--如果存在则删除
--创建索引
CREATE?NONCLUSTERED?INDEX?IX_TEST_TNAME?--创建一个非聚集索引
ON?TEST(TNAME)??--为TEST表的TNAME字段创建索引
WITH?FILLFACTOR?=?30?--填充因子为30%
GO
SELECT?*?FROM?TEST(INDEX?=?IX_TEST_TNAME)?WHERE?TNAME?=?'A'?--指定按‘IX_TEST_TNAME’索引查询
总结:
什么是索引:数据库中的索引是某个表中一列或多列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。
分类:
唯一索引(UNIQUE):不允许两行具有相同的索引值(创建了唯一约束,系统将自动创建唯一索引)
主键索引:主键索引要求主键中的每个值是唯一的,(创建主键自动创建主键索引)
聚集索引(CLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序相同,表中只能包含一个聚集索引,主键列默认为聚集索引
非聚集索引(NONCLUSTERED):表中各行的物理顺序与键值的逻辑(索引)顺序不匹配,表中可以有249个非聚集索引
创建索引的标准:用语频繁搜索的列;用语对数据进行排序的列
注意:如果表中仅有几行,或列中只包含几个不同的值,不推荐创建索引,因为SQL Server 在小型表中用索引搜索数据所花的时间比逐行搜索更长。
在SQL中怎样用指定索引查询?
一般来说在条件中使用索引对应的第一个字段就可能会用到该索引。
微软的SQL SERVER提供了两种索引:聚集索引(clustered index,也称聚类索引、簇集索引)和非聚集索引(nonclustered index,也称非聚类索引、非簇集索引)。
索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。
数据搜索实现角度
索引也是另外一类文件/记录,它包含着可以指示出相关数据记录的各种记录。其中,每一索引都有一个相对应的搜索码,字符段的任意一个子集都能够形成一个搜索码。这样,索引就相当于所有数据目录项的一个集合,它能为既定的搜索码值的所有数据目录项提供定位所需的各种有效支持。
以上内容参考:百度百科-数据库索引