mysql的主键和索引的总结。

1、mysql的主键和外键的区别

主键是用来唯一标识表中一条记录的。 主键不允许为null 主键是唯一的 一个表只能有一个主键。

外键是在两个表之间建立连接的,一个表可以有一个或者多个外键,外键主要作用是保证数据引用的完整性 可以允许为null,若是不为null的话,则必须是子表的主键的列的值  (就有了主从表的关系父子,主表是主键所在的表,从表是外键所在的表)

2、mysql的索引

建立索引我们可以快速的找到我们想要的数据,举个例子,现在假设表table里面有1百万条数据记录,在没有索引的条件下操作的话,select * from table where id = 20000; 就需要扫描整个表,效率非常的慢,但是当我们加入索引的话,就根据碎银直接定位到那个位置上去,不在是全表去扫描数据的。

每一种存储引擎支持的索引不同,可以分为两类的,mysql的存储引擎分为BTre和hash, MyisAm和InnoDB是Btree的引擎,而Memory是hash和Btree的索引实现的。

索引的优点:

加快了查询在的速度,通过唯一索引,保证了表中的每一行数据的唯一性

在进行分组和排序的时候,利用索引的会非常的高的。加速表与表之间的关联。

索引的缺点:

在创建索引和维护索引都是比较的费时间的。因为索引是三都落到文件的。随着数据量的增加,那么存储索引的文件会变的越来越大。这样在进行增、删除和查询的时候效率就会有影响的。索引的动态的维护。

索引的分类:

普通索引:允许在索引所在的列插入重复值和空值

唯一索引:索引值必须唯一 允许有空

单列索引:包含单个列的索引  

组合索引:多个列之间的组合索引  

全文索引: 只有MYISAM的存储引擎支持全文索引  

空间索引: 

猜你喜欢

转载自blog.csdn.net/tryll/article/details/84262194