Mysql主键索引,普通索引索引,唯一索引的区别
主键索引:
- 主键索引不可以为空
- 主键索引可以做外键
- 一张表中只能有一个主键索引
普通索引:
- 用来加速数据访问速度而建立的索引。多建立在经常出现在查询条件的字段和经常用于排序的字段。
- 被索引的数据列允许包含重复的值
唯一索引:
- 被索引的数据列不允许包含重复的值
以下内容转载自: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主键索引,普通索引索引,唯一索引的区别相关推荐
- 视图view没有主键,但可以添加唯一索引
视图没有主键,但可以加上唯一索引 大致可以这样理解:视图是张虚拟的表. 视图所对应的数据不进行实际的存储,数据库中只存储视图的定义,对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表 ...
- 主键、唯一键与唯一索引的区别
一般,我们看到术语"索引"和"键"交换使用,但实际上这两个是不同的.索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念.键代表创建来实施业务规则的完整性约 ...
- oracle主键和唯一索引,Oracle 主键、唯一键与唯一索引的区别
如果我们让主键约束或者唯一键约束失效,Oracle自动创建的唯一索引是否会受到影响? SQL> drop table test purge; Table dropped. SQL> cre ...
- oracle主键 唯一索引的区别,Oracle 主键、唯一键与唯一索引的区别
一般,我们看到术语"索引"和"键"交换使用,但实际上这两个是不同的.索引是存储在数据库中的一个物理结构,键纯粹是一个逻辑概念.键代表创建来实施业务规则的完整性约 ...
- MySQL主键类型使用int、bigint、varchar区别
范围 int:从 -2^31 (-2147483648) 到 2^31-1 (2147483647) 的整型数据. bigint:从 -2^63 (-9223372036854775808) 到 2^ ...
- MySQL主键、普通索引和唯一索引的区别、全文索引
1 概念区分 普通索引 V.S 唯一索引 普通索引可重复,唯一索引和主键一样不能重复. 唯一索引可作为数据的一个合法验证手段,例如学生表的身份证号码字段,人为规定该字段不得重复,那么就使用唯一索引.( ...
- mysql 主键 聚集索引_主键索引就是聚集索引吗?
这个问题很刁钻! 答案是错的. 的确在mysql数据库innodb引擎里面,主键的确就是聚集索引. 但是myisam引擎里面主键也不是聚集索引. 另外在sql server中还可以显示的指定聚集索引. ...
- mysql主键索引_mysql主键与索引
一.概念: 1.主键(primary key)能够唯一标识表中某一行的属性或属性组.一个表只能有一个主键,但可以有多个候选索引.主键常常与外键构成参照完整性约束,防止出现数据不一致.主键可以保证记录的 ...
- mybatisplus新增返回主键_第17期:索引设计(主键设计)
表的主键指的针对一张表中的一列或者多列,其结果必须能标识表中每行记录的唯一性.InnoDB 表是索引组织表,主键既是数据也是索引. 主键的设计原则 1. 对空间占用要小上一篇我们介绍过 InnoDB ...
- mysql 主键冲突 多个事务回滚_MySQL实战45讲Day38----自增主键不是连续的原因
一.自增主键不连续的原因: 对于表: CREATE TABLE `t` ( `id` int(11) NOT NULL AUTO_INCREMENT, `c` int(11) DEFAULT NULL ...
最新文章
- 从Java到Kotlin(三)
- 2.17 Jupyter/ipython 笔记本的快速指南-深度学习-Stanford吴恩达教授
- jekyll网站上传服务器,jekyll 高效搭建个人博客之完整流程
- VigiBase中搜索和眼病相关的统计数据
- cache buster issue application index and duplicate .library file
- 第 52 章 Web Server Optimization
- STM32 通用定时器基本原理
- 龙芯发布.NET 6.0.100开发者内测版
- (转)Win7下如何硬盘安装Ubuntu
- java父类静态 子类调用_在java 中 父类定义的静态方法 子类 调用时候 如何 知道 是哪个子类调用的...
- 超难的75道逻辑思维题
- php 字符串固定长度,不够补充其他字符串
- Boost Serialization 库
- 查看XBox360的系统版本信息
- 材料科学基础学习指导-吕宇鹏-名词和术语解释-第8章:回复与再结晶
- html5在线学习系统,Canvas LMS 在线学习管理系统
- JS添加/修改CSS样式
- 案例-canvas绘制雨滴
- 郑和下西洋有两个主要目的:
- 网易视频云余利华:以用户体验为核心,深耕PaaS云生态
热门文章
- 借助 Material Design,帮助您打造更好的无障碍应用 (上篇)
- linux运行gradle,Linux Gradle 安装
- 常用数字信号编码之反向不归零码码、曼彻斯特编码、差分曼彻斯特编码
- 【LeetCode】【Java】13. 罗马数字转整数——给定一个罗马数字,将其转换成整数。输入确保在 1 到 3999 的范围内。
- AI学术交流——“人工智能”和“神经网络学习”
- nginx高并发性能调优
- Android编译系统分析五:system.img的生成过程
- [Mapbox GL]使用3D展示建筑物
- Activity活动
- 活动公告:201109011530