主键索引:

  • 主键索引不可以为空
  • 主键索引可以做外键
  • 一张表中只能有一个主键索引

普通索引:

  • 用来加速数据访问速度而建立的索引。多建立在经常出现在查询条件的字段和经常用于排序的字段。
  • 被索引的数据列允许包含重复的值

唯一索引:

  • 被索引的数据列不允许包含重复的值

以下内容转载自:https://blog.csdn.net/qq_41618510/article/details/83317969

查询的优化:

哈希索引

InnoDB引擎有一个特殊的功能叫做“自适应哈希索引(adaptive hash index)”。  当InnoDB注意到某些索引值被使用得非常频繁时,它会在内存中基于B-Tree索引之上再创建-一个哈希索引,这样就让B-Tree索引也具有哈希索引的一些优点,比如快速的哈希查找。这是一个完全自动的、内部的行为,用户无法控制或者配置,不过如果有必要,完全可以关闭该功能。

创建自定义哈希索引。如果存储引擎不支持哈希索引,则可以模拟像InnoDB一样创建哈希索引,这可以享受- -些哈希索引的便利,例如只需要很小的索引就可以为超长的键创建索引。

思路很简单:在B-Tree基础.上创建-一个伪哈希索引。这和真正的哈希索引不是一回事,因为还是使用B-Tree进行查找,但是它使用哈希值而不是键本身进行索引查找。你需要做的就是在查询的WHERE子句中手动指定使用哈希函数。

下面是一个实例,  例如需要存储大量的URL,并需要根据URL进行搜索查找。如果使用B-Tree来存储URL,存储的内容就会很大,  因为URL本身都很长。正常情况下会有如下查询:

mysql> SELECT id FROM url WHERE url="http: //ww.mysq1.com" ;

若删除原来URL列.上的索引,而新增-一个被索引的url_ crc 列,使用CRC32做哈希,就可以使用下面的方式查询:

mysql> SELECT id FROM url WHERE url="http://www.mysq1. com"
AND url_ crc=CRC32("http://www.mysq1.com");

这样做的性能会非常高,因为MySQL优化器会使用这个选择性很高而体积很小的基于url_ crc列的索引来完成查找(在上面的案例中,索引值为1560514994)。即使有多个记录有相同的索引值,查找仍然很快,只需要根据哈希值做快速的整数比较就能找到索引条目,然后----比较返回对应的行。另外一种方式就是对完整的URL字符串做索引,那样会非常慢。

Mysql主键索引,普通索引索引,唯一索引的区别相关推荐

  1. 视图view没有主键,但可以添加唯一索引

    视图没有主键,但可以加上唯一索引 大致可以这样理解:视图是张虚拟的表. 视图所对应的数据不进行实际的存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表 ...

  2. 主键、唯一键与唯一索引的区别

    一般,我们看到术语"索引"和"键"交换使用,但实际上这两个是不同的.索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念.键代表创建来实施业务规则的完整性约 ...

  3. oracle主键和唯一索引,Oracle 主键、唯一键与唯一索引的区别

    如果我们让主键约束或者唯一键约束失效,Oracle自动创建的唯一索引是否会受到影响? SQL> drop table test purge; Table dropped. SQL> cre ...

  4. oracle主键 唯一索引的区别,Oracle 主键、唯一键与唯一索引的区别

    一般,我们看到术语"索引"和"键"交换使用,但实际上这两个是不同的.索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念.键代表创建来实施业务规则的完整性约 ...

  5. MySQL主键类型使用int、bigint、varchar区别

    范围 int:从 -2^31 (-2147483648) 到 2^31-1 (2147483647) 的整型数据. bigint:从 -2^63 (-9223372036854775808) 到 2^ ...

  6. MySQL主键、普通索引和唯一索引的区别、全文索引

    1 概念区分 普通索引 V.S 唯一索引 普通索引可重复,唯一索引和主键一样不能重复. 唯一索引可作为数据的一个合法验证手段,例如学生表的身份证号码字段,人为规定该字段不得重复,那么就使用唯一索引.( ...

  7. mysql 主键 聚集索引_主键索引就是聚集索引吗?

    这个问题很刁钻! 答案是错的. 的确在mysql数据库innodb引擎里面,主键的确就是聚集索引. 但是myisam引擎里面主键也不是聚集索引. 另外在sql server中还可以显示的指定聚集索引. ...

  8. mysql主键索引_mysql主键与索引

    一.概念: 1.主键(primary key)能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的 ...

  9. mybatisplus新增返回主键_第17期:索引设计(主键设计)

    表的主键指的针对一张表中的一列或者多列,其结果必须能标识表中每行记录的唯一性.InnoDB 表是索引组织表,主键既是数据也是索引. 主键的设计原则 1. 对空间占用要小上一篇我们介绍过 InnoDB ...

  10. mysql 主键冲突 多个事务回滚_MySQL实战45讲Day38----自增主键不是连续的原因

    一.自增主键不连续的原因: 对于表: CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL ...

最新文章

  1. 从Java到Kotlin(三)
  2. 2.17 Jupyter/ipython 笔记本的快速指南-深度学习-Stanford吴恩达教授
  3. jekyll网站上传服务器,jekyll 高效搭建个人博客之完整流程
  4. VigiBase中搜索和眼病相关的统计数据
  5. cache buster issue application index and duplicate .library file
  6. 第 52 章 Web Server Optimization
  7. STM32 通用定时器基本原理
  8. 龙芯发布.NET 6.0.100开发者内测版
  9. (转)Win7下如何硬盘安装Ubuntu
  10. java父类静态 子类调用_在java 中 父类定义的静态方法 子类 调用时候 如何 知道 是哪个子类调用的...
  11. 超难的75道逻辑思维题
  12. php 字符串固定长度,不够补充其他字符串
  13. Boost Serialization 库
  14. 查看XBox360的系统版本信息
  15. 材料科学基础学习指导-吕宇鹏-名词和术语解释-第8章:回复与再结晶
  16. html5在线学习系统,Canvas LMS 在线学习管理系统
  17. JS添加/修改CSS样式
  18. 案例-canvas绘制雨滴
  19. 郑和下西洋有两个主要目的:
  20. 网易视频云余利华:以用户体验为核心,深耕PaaS云生态

热门文章

  1. 借助 Material Design,帮助您打造更好的无障碍应用 (上篇)
  2. linux运行gradle,Linux Gradle 安装
  3. 常用数字信号编码之反向不归零码码、曼彻斯特编码、差分曼彻斯特编码
  4. 【LeetCode】【Java】13. 罗马数字转整数——给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
  5. AI学术交流——“人工智能”和“神经网络学习”
  6. nginx高并发性能调优
  7. Android编译系统分析五:system.img的生成过程
  8. [Mapbox GL]使用3D展示建筑物
  9. Activity活动
  10. 活动公告:201109011530