之前一直没用过oracle,数据库的基础也差,
这几天garry给讲了一些关于索引相关的东西,
虽然懂了不少还是有一些不清楚的地方。
如,
create table nice(
id number(4) constraint pk_id primary key,
name varchar2(20) constraint u_name unique
)
在建表之后就会有两个index,select * from user_indexes where table_name="NICE";可以查看。
既然primary和unique是可以作为索引的,那么,为什么还要建索引呢,
在网上查到的说法,虽然清晰了一点,但是还是不是很清楚。
1.这个主键和索引并非是两个相同的东西,表中的主键一般作用是用来对记录进行区分的,使得记录可以唯一方便查找。但是又很多时候我们需要查找的并不是主键,而且其他的属性,比如学生表的主键是“学号”,但是我经常要根据学生的“姓名”来进行查询,那么建立索引就会提高查询效率(但相对的插入和删除的效率就会变慢)。
至于什么时候使用索引这个一般是根据场景决定的,索引会加快查询(select)的速度,但是会减慢(insert和delete)的速度,需要自己根据业务和数据权衡使用,很难有定论
2.主键只是不得重复的属性.按照主键查找,只能挨个的对比,找到相等的就ok
而索引呢,不必挨个对比. 就像哈希结构(虽然很多数据库不用哈希作为数据结构,但相似的道理),索引在你存储的时候会在键与"该组数据的物理位置"(就比如C中的数组,存储在连续的区域)建立关系(哈希中叫做哈希函数),这样在查询的时候:输入键->得到数据的位置->在那个位置上取出数据.所以比挨个对比快的多.
因此索引加快了查询,但是减慢了存储(插入,修改). 所以索引适合查询而不适合写数据
分享到:
相关推荐
自增主键为什么不是连续的?
主键是什么? 答:拿主键可以唯一确定一条数据,它和物理存储排序一致,不能为空,一个表只能有一个。 原本没有创建的主键的表在磁盘上存储为: Id=0;username=username0;sex=男;address=浙江; Id=1;username=...
所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述...
39自增主键为什么不是连续的?.pptx
1、 主键是一种约束,唯一索引是一种索引,两者在本质上是不同的。 2、 主键创建后一定包含一个唯一性索引,唯一性索引并不一定就是主键。 3、 唯一性索引列允许空值,而主键列不允许为空值。 4、 主键列在创建时...
67 基于主键的索引是如何设计的,以及如何根据主键索引查询?l.pdf
大家都知道对于分区字段必须是主键的一部分,那么建了复合主键之后,是否需要对分许字段再单独添加一个索引呢?有没有效果?来验证一下,下面话不多说了,来一起看看详细的介绍吧。 1、新建表effect_new(以创建时间...
行业-67 基于主键的索引是如何设计的,以及如何根据主键索引查询?l.rar
在MySQL里,主键索引和辅助索引分别是什么意思,有什么区别? 上次的分享我们介绍了聚集索引和非聚集索引的区别,本次我们继续介绍主键索引和辅助索引的区别。 1、主键索引 主键索引,简称主键,原文是PRIMARY KEY,...
goldengate同步无主键无唯一索引表的问题以及解决方案.docx
如何在oracle中查询所有用户表的表名、主键名称、索引、外键等
B+树介绍,为什么选择B+树,非聚集索引 聚集索引 第一点、第二点、第三点 不建议使用过长的字段,不建议使用非自增字段作为主键 什么条件下使用索引? 索引选择性,行数前缀索引 所谓索引的选择性是指不重复的索引值...
删除数据库的所有表、存储过程、主键、外键、索引等 .sql
聚簇索引与主键的选择一、什么是聚簇索引?二、什么是非聚簇索引?1. InnoDB引擎中2. MyISAM引擎中三、聚簇索引的优劣与主键选择的关系 一、什么是聚簇索引? 首先,聚簇索引不是一种单独的索引类型,其实是数据的...
删除数据库的所有表、存储过程、主键、外键、索引等
另附以下功能 * 生成目录树 * 生成迁移脚本 * 查找所有System.out,.err * 批量替换多关键字 详情见 http://blog.csdn.net/amosryan/article/details/6684465
数据库,索引,主键,约束,sql的相关自学学习资料,比较乱,但都是个人心得,值得看看
为什么聚集索引可以创建在任何⼀列上,如果此表没有主键约束,即有可能存在重复⾏数据呢?, 在主键上创建聚集索引的表在数据插⼊上为什么⽐主键上创建⾮聚集索引表速度要慢?, 何时使⽤聚集索引,何时使⽤⾮聚集...
1.InnoDB存储引擎的数据结构必须需要一个主键才可以组织起来,如果用户使用InnoDB存储引擎建立表的时候,没有指定主键,则Mysql会自动的帮你找到一个合适的唯一索引作为主键,若找不到符合条件唯一索引条件的字段时...