美文网首页Sql
浅谈对数据库索引和主键的理解

浅谈对数据库索引和主键的理解

作者: 莫问以 | 来源:发表于2019-03-18 16:55 被阅读3次

1、什么是索引?

面试时候,常常被问到自己熟知的Mysql优化技巧,索引一定会被提及。那么,什么是索引呢?索引是一种加快海量数据查询的技术。索引就像是小时候的新华字典,有了索引,你可以快速地找到自己想找的东西。

2、索引的优缺点

1)优点
A.加快数据检索速度和表与表之间的连接;
B.可以显著减少查询中分组和排序的时间(使用分组和排序子句进行数据检索时)。

2)缺点
A.占物理空间。
B.需要动态维护,降低数据维护速度(update、delete、insert)。

3、索引的分类

主要分为聚集索引非聚集索引两类。

什么是聚集索引?
正文内容本身是一种按照一定规则排列的目录称为“聚集索引”,就如新华字典的正文本身。因为数据只能按照一种规则排序,所以一张表至多有一个聚集索引,但可以有多个非聚集索引。

非聚集索引最常见的就是联合索引,那什么是联合索引呢?
比如 INDEX idx_test(col_a,col_b),这种包含多个字段的索引就被称为“联合索引”。

何时使用聚集索引或非聚集索引,参照:

聚集索引或非聚集索引.png

在MySQL数据库的 InnoDB存储引擎中,主键索引就是聚集索引,所有数据都会按照主键索引进行组织;而在 MyISAM存储引擎中,就没有聚集索引了,因为MyISAM存储引擎中的数据不是按索引顺序进行存储的。

4、什么是主键?

主键:唯一标识记录(常见的什么什么ID),不允许重复,不允许为空。
主键默认建立唯一索引,所以创建表时,不能在同一个字段上建立两个索引,如:deal_id已经是主键,不能再次执行:
create index table_fei on tmp_table(deal_id) 会报错!

比对.png
  1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。

  2. 一个表中可以有多个唯一性索引,但只能有一个主键(图中多个主键指复合主键)

  3. 主键列不允许空值,而唯一性索引列允许空值。

  4. 索引可以提高查询的速度。

主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中

稍后在做调整 讲讲关于函数索引

相关文章

  • 浅谈对数据库索引和主键的理解

    1、什么是索引? 面试时候,常常被问到自己熟知的Mysql优化技巧,索引一定会被提及。那么,什么是索引呢?索引是一...

  • 数据库索引专题

    1、索引的分类 深入理解四种数据库索引类型(- 唯一索引/非唯一索引 - 主键索引(主索引) - 聚集索引/非聚集...

  • 浅谈数据库主键外键索引

    目录 1、主键、外键、索引定义 2、为什么定义主键、外键 3、主键和外键的关系 4、数据库中主键和外键的设计原则 ...

  • mysql(15)

    主键、外键和索引的区别? 主键,外键和索引的区别如下表: |主键|外键|索引|------|-----|----|...

  • 主键索引和普通索引

    一:主键索引和普通索引的定义 主键索引:根据主键建立的索引普通索引:除了主键索引 二:例子(网上找的图,主要看下面...

  • MYSQL记录

    简单描述MySQL中,索引、主键、唯一索引、联合索引的区别,对数据库的性能有什么影响? MySQL索引的基础和类型...

  • Mysql 索引、视图、窗口函数

    一、索引1.聚集索引聚集索引可以理解为顺序排列,比如主键自增的表即为聚集索引,所以聚集索引一个数据库表只能有一个。...

  • 索引创建及索引用法

    数据库索引分三种:普通索引(index)、唯一索引(unique)、主键(primary key)、外建索引()、...

  • 2020数据库最新面试题常考汇总

    [toc] MySQL索引 1.数据库中有哪些索引类型? 索引的几种类型:唯一索引、主键索引、聚集索引、普通索引、...

  • MySql优化

    MySqlInnoDB引擎支持事务 非主键索引都会存主键索引值非主键索引检索:先走非主键索引,再走主键索引 表即主...

网友评论

    本文标题:浅谈对数据库索引和主键的理解

    本文链接:https://www.haomeiwen.com/subject/aykbmqtx.html