假如我用create index s_id_age_index on student(id,age);创建了索引,之后使用这个索引的语法是怎样的

假如我用create index s_id_age_index on student(id,age);创建了索引,之后使用这个索引的语法是怎样的,第1张

1、Create table student1(sno char(8) primary key,sname char(8) ,sex char(2),age int); 2、Create table student1(sno char(8) not null、cno char(3) not null、grade float); 3、Alter table Student1 Add (Dept char(20) not null); 4、Alter table Student1 Modify (Dept char(40) not null); 5、Alter table Student1 delete primary key; 6、Alter table Student1 drop sno; 7、Create index idx_sc on sc1 (cno desc,grade); 8、Drop table student1 ; 9、Drop index idx_sc ; 10、Drop table sc1;

CREATE
[UNIQUE]
INDEX
ON
(字段
[ASC|DESC]);
UNIQUE
--确保所有的索引列中的值都是可以区分的。
[ASC|DESC]
--在列上按指定排序创建索引。
(创建索引的准则:
1如果表里有几百行记录则可以对其创建索引(表里的记录行数越多索引的效果就越明显)。
2不要试图对表创建两个或三个以上的索引。
3为频繁使用的行创建索引。
)
示例
create
index
i_1
on
emp(empno
asc);

当查询的数据量比较大时,创建索引有如下五大主要作用:

通过创建唯一性索引,可以保证数据库表中每一行数据的唯一性。可以大大加快数据的检索速度,这也是创建索引的最主要的原因。可以加速表和表之间的连接,特别是在实现数据的参考完整性方面特别有意义。在使用分组和排序 子句进行数据检索时,同样可以显著减少查询中分组和排序的时间。通过使用索引,可以在查询的过程中,使用优化隐藏器,提高系统的性能。

Oracle查询优化器会感知到你建立的索引,在有对应字段谓词出现的时候就会自动使用。但是在某些情况下Oracle查询优化器则无法使用索引,例如

含有隐式类型转换

使用OR来连接谓词

字段上使用了函数或是表达式

索引扫描代价大于全表扫描

not in

like '%xxx'

访问的数据比例超过一定范围,优化器会认为full table scan的成本更低,此事走索引扫描反而会使总成本变大,因此,索引用来快速访问表中的少量记录,对于访问表中的大量记录是不适合用索引的。

联合索引是由多个字段组成的索引。create
[unique|fulltext|spatial]
index
index_name[using
index_type]on
tbl_name
(index_col_name,)index_col_name:col_name[(length)]
[asc
|
desc]如果你经常要用到多个字段的多条件查询,可以考虑建立联合索引,一般是除第一个字段外的其它字段不经常用于条件筛选情况,比如说a,b
两个字段,如果你经常用a条件或者a+b条件去查询,而很少单独用b条件查询,那么可以建立a,b的联合索引。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/13143386.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-11
下一篇 2023-06-11

发表评论

登录后才能评论

评论列表(0条)

保存