oracle(33)_SQL_索引

版权声明:如需转载,请注明出处 https://blog.csdn.net/qq_36260974/article/details/88907102

SQL

索引

索引

● 索引是用于加速数据存取的数据对象。合理的使用索引可以大大降低 i/o 次数,从而提高数据访问性能。
● 索引有很多种我们主要介绍常用的几种:

为什么添加了索引之后,会加快查询速度呢?

  • 图书馆:如果杂乱地放书的话检索起来就非常困难,所以将书分类,然后再建一个箱子,箱
    子里面放卡片,卡片里面可以按类查询,按姓名查或者类别查,这样的话速度会快很多很多,
    这个就有点像索引。索引的好处就是提高你找到书的速度,但是正是因为你建了索引,就应
    该有人专门来维护索引,维护索引是要有时间精力的开销的,也就是说索引是不能乱建的,
    所以建索引有个原则:如果有一个字段如果不经常查询,就不要去建索引。现在把书变成我
    们的表,把卡片变成我们的索引,就知道为什么索引会快,为什么会有开销。

● 语法:

  • 创建索引:
    • 单例索引
      • 单例索引是基于单个列所建立的索引,比如:
        CREATE index 索引名  on 表名(列名)
        
    • 复合索引
      • 复合索引是基于两个列或多个列的索引。在同一张表上可以有多个索引,但是要求列的组合必须不同,比如:
        Create index emp_idx1 on emp(ename,job);
        Create index emp_idx1 on emp(job,ename);
        

范例:给 person 表的 name 建立索引

  • 示例图:
    在这里插入图片描述

范例:给 person 表创建一个 name 和 gender 的索引

  • 示例图:
    在这里插入图片描述
    在这里插入图片描述

● 索引的使用原则:

  • 在大表上建立索引才有意义
  • 在where子句后面或者是连接条件上建立索引
  • 索引的层次不要超过4层

以上操作完整源码:

select * from person;

--创建单例索引
create index pname_index on person(pname);

--索引不需要主动使用,根据索引列查询时就自动的使用了索引
select * from person t where t.pname = '魏宇轩';

--复合索引,查询数据使用的时候是有索引顺序的,下面的两种创建是有区别的
create index pg_index on person(pname, age);
create index gp_index on person(age, pname);
--下面这 sql 使用 pg_index
select * from person t where t.pname = '魏宇轩' and t.age = 21;
--下面这 sql 使用 gp_index
select * from person t where  t.age = 21 and t.pname = '魏宇轩';

如有错误,欢迎指正!

猜你喜欢

转载自blog.csdn.net/qq_36260974/article/details/88907102