mysql primary unique_MySQL中的INDEX,PRIMARY,UNIQUE,FULLTEXT之间的区别?
差异
KEY 或 INDEX 是指正常的非唯一索引 . 允许索引的非不同值,因此索引可以包含索引的所有列中具有相同值的行 . 这些索引不会对您的数据施加任何限制,因此它们仅用于确保某些查询可以快速运行 .
UNIQUE 指的是索引的所有行必须唯一的索引 . 也就是说,对于此索引中的所有列,同一行可能不具有与另一行相同的非NULL值 . 除了用于加速查询之外,UNIQUE索引还可用于强制限制数据,因为数据库系统在插入或更新数据时不允许破坏此不同值规则 .
您的数据库系统可能允许将UNIQUE索引应用于允许NULL值的列,在这种情况下,如果两行都包含NULL值,则允许两行相同(这里的基本原理是NULL被认为不等于它自己) . 但是,根据您的应用程序,您可能会发现这是不合需要的:如果您希望阻止这种情况,则应该禁止相关列中的NULL值 .
PRIMARY 的行为与UNIQUE索引完全相同,只是它始终命名为'PRIMARY',并且表上可能只有一个(并且应该始终有一个;尽管某些数据库系统不强制执行此操作) . PRIMARY索引旨在作为唯一标识表中任何行的主要方法,因此与UNIQUE不同,它不应在任何允许NULL值的列上使用 . 您的PRIMARY索引应该位于足以唯一标识行的最小列数上 . 通常,这只是一个包含唯一自动递增数字的列,但如果还有其他任何可以唯一标识行的列,例如国家/地区列表中的"countrycode",则可以使用该列 .
某些数据库系统(例如MySQL的InnoDB)将按照它们在PRIMARY索引中出现的顺序将表的记录存储在磁盘上 .
FULLTEXT 索引与上述所有索引不同,它们在数据库系统之间的行为差别很大 . FULLTEXT索引仅对使用MATCH()/ AGAINST()子句进行的全文搜索很有用,与上述三种不同 - 通常使用b-tree在内部实现(允许从最左列开始选择,排序或范围)或哈希表(允许从最左侧列开始选择) .
在其他索引类型是通用的情况下,FULLTEXT索引是专用的,因为它用于狭窄的目的:它仅用于“全文搜索”功能 .
相似之处
所有这些索引中可能包含多个列 .
除了FULLTEXT之外,列顺序很重要:要使索引在查询中有用,查询必须使用从左侧开始的索引中的列 - 它不能只使用第二,第三或第四部分索引,除非它还使用索引中的前一列来匹配静态值 . (要使FULLTEXT索引对查询有用,查询必须使用索引的所有列 . )
mysql primary unique_MySQL中的INDEX,PRIMARY,UNIQUE,FULLTEXT之间的区别?相关推荐
- MySQL中INDEX,PRIMARY,UNIQUE,FULLTEXT之间的区别?
创建MySQL表时,PRIMARY,UNIQUE,INDEX和FULLTEXT有什么区别? 我将如何使用它们? #1楼 我觉得这已经很好地涵盖了,也许除了以下几点: 如果选择性足够,简单的KEY / ...
- SQL Server中唯一索引和唯一约束之间的区别
This article gives you an overview of Unique Constraints in SQL and also the Unique SQL Server index ...
- IO多路复用中select、poll、epoll之间的区别
本文来说下IO多路复用中select.poll.epoll之间的区别 文章目录 什么是IO多路复用 为什么有IO多路复用机制 同步阻塞(BIO) 同步非阻塞(NIO) IO多路复用(现在的做法) 3种 ...
- 解析java中方法的重载和重写之间的区别与联系
解析java中方法的重载和重写之间的区别与联系 1 不同点 1.1 方法重写是在不同的类中(父子类),方法重载是在同一类中 1.2 方法重载最初的目的是构造方法的多样化,方法重写的目的是让重写的方法满 ...
- mysql 迭代更新_MySQL、MongoDB、Redis 数据库之间的区别与使用(本章迭代更新)
MySQL.MongoDB.Redis 数据库之间的区别与使用 MySQL.MongoDB.Redis 数据库之间的区别与使用(本章迭代更新) update:2019年2月20日 15:21:19(本 ...
- Java Persistence API中的FetchType LAZY和EAGER之间的区别?
我是Java Persistence API和Hibernate的新手. Java Persistence API中的FetchType.LAZY和FetchType.EAGER什么区别? #1楼 我 ...
- Vue中computed、methods和watch之间的区别
对于那些开始学习Vue的人来说,对于方法.计算属性和观察者之间的区别有点混淆. 尽管通常可以使用它们中的每一个来完成或多或少相同的事情,但了解每个人在哪里胜过其他人还是很重要的. 在这个快速提示中,我 ...
- .NET中小数,浮点数和双精度之间的区别?
.NET中的decimal , float和double float什么区别? 有人什么时候会使用其中之一? #1楼 对我来说,这是一个有趣的话题,因为今天,我们遇到了一个讨厌的小错误,涉及到deci ...
- Hibernate中保存与持久性以及saveOrUpdate之间的区别
保存与保存或更新与持久保存在Hibernate中 save和saveOrUpdate之间的区别是什么或save和persist之间的区别是任何Hibernate面试中常见的面试问题,就像Hiberna ...
最新文章
- 我的第一份vim程序
- 牛客 - 配对(贪心+数学)
- Frida Android hook
- MySQL_数据类型
- 大数据_Flink_数据处理_运行时架构5_slot和任务调度---Flink工作笔记0020
- 自动驾驶系统的学习笔记
- Mac解压Linux压缩.tar.gz文件
- Java == 和 equals
- 自由空间光通信OptiSystem仿真
- java代码注释规范
- JST日本压着端子GHD系列线对板连接器PCB封装库(1.25mm间距)
- 微信授权扫码点餐-新特性React16
- Android学习-指南针(方向传感器)
- 红米4A Android 版本,红米4A评测:4A搭载深度定制基于Android6.0.1系统MIUI 8 - 红米4A评测:双11手机单品销量第一 怎么样好不好用?...
- Servernbsp;Tomcatnbsp;v7.0amp;nbs…
- 记一次idea莫名其妙报错找不到依赖问题
- python制作音乐相册_Python数据可视化:网易云音乐歌单
- 常用的几种时间系统GMT、UTC等以及使用Python代码GPS时间转UTC时间
- Mybatis从入门到精通二(入门详解)
- 通过ssh隧道连接mysql
热门文章
- 微课|中学生可以这样学Python(例3.1):闰年判断
- 使用Python完美管理和调度你的多个任务
- Python常用运算符含义与用法演示
- C++ C++基础语法入门总结(二)引用-内联函数-C++11新特性
- Linux安装jellyfin硬件加速,云芯一号试用:Jellyfin播放H264视频
- 力扣332. 重新安排行程(JavaScript)
- 什么是ie浏览器_关于几款电脑浏览器的使用感受,你用过吗?
- composition java_阿里P7架构师通过源码浅析Java中的资源加载
- 如何自建微信外卖平台_外卖平台高抽成的背后,看小程序如何玩转餐饮外卖?...
- php recordarray,php5.5新数组函数array-column使用实例