MySQL中主键与索引关系
技术百科
怪我咯
发布时间:2017-04-07
浏览: 次 关系数据库依赖于主键,它是数据库物理模式的基石。主键在物理层面上只有两个用途:
惟一地标识一行。
作为一个可以被外键有效引用的对象。
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。下面是主键和索引的一些区别与联系。
1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。
所谓主键就是能够唯一标识表中某一行的属性或属性组,一个表只能有一个主键,但可以有多个候选索引。因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。主键除了上述作用外,常
常与外键构成参照完整性约束,防止出现数据不一致。数据库在设计时,主键起到了很重要的作用。
主键可以保证记录的唯一和主键域非空,数据库管理系统对于主键自动生成唯一索引,所以主键也是一个特殊的索引。
2. 一个表中可以有多个唯一性索引,但只能有一个主键。
3. 主键列不允许空值,而唯一性索引列允许空值。
4. 索引可以提高查询的速度。
其实主键和索引都是键,不过主键是逻辑键,索引是物理键,意思就是主键不实际存在,而索引实际存在在数据库中,主键一般都要建,主要是用来避免一张表中有相同的记录,索引一般可以不建,但如果需要对该表进行查询操作,则最好建,这样可以加快检索的速度。
FAQ
1. 主键是个什么?
我来来具体的东西说吧,书大家都看过吧,没看过的找本翻一下,看下它每页是不是有个页码,我们的数据表主键就相当于是这个页码,明白了吧。
2. 那么索引是什么呢?
我们还拿书来说,索引相当于书的目录,有了目录我们可以很快的知道这本书的基本内容和结构,数据索引也一样,它可以加快数据表的查询速度。
3. 主键主索引类比,及其他们的作用?
主键是为了标识数据库记录唯一性,不允许记录重复,且键值不能为空,主键也是一个特殊索引。
数据表中只允许有一个主键,但是可以有多个索引。
使用主键会数据库会自动创建主索引,也可以在非主键上创建索引,方便查询效率。
索引可以提高查询速度,它就相当于字典的目录,可以通过它很快查询到想要的结果,而不需要进行全表扫描。
主键索引外索引的值可以为空。
主键也可以由多个字段组成,组成复合主键,同时主键肯定也是唯一索引。
唯一索引则表示该索引值唯一,可以由一个或几个字段组成,一个表可以有多个唯一索引。
# 他们的
# 是一种
# 几个
# 都是
# 是个
# 有一个
# 多个
# 为空
# mysql
# 主键
# 张冠李戴
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- windows如何测试网速_windows系统网络
- phpstudy本地环境mysql忘记密码_重置m
- 如何使用Golang实现云原生应用弹性伸缩_自动应
- 如何自定义Windows终端的默认配置文件?(Po
- 如何开启Windows的远程服务器管理工具(RSA
- Python性能剖析高级教程_cProfileLi
- Win11怎么清理C盘OneDrive缓存_Win
- 如何在Golang中配置代码格式化工具_使用gof
- Win11怎么关闭透明效果_Windows11辅助
- Mac怎么开启“任何来源”_Mac安装未签名应用的
- MAC如何设置网卡MAC地址克隆_MAC终端修改物
- 如何在 Go 开发中正确处理本地包导入与远程模块路
- PHP 中 require() 语句返回值的用法详
- 如何在Golang中实现微服务负载均衡_Golan
- Win11怎么调整屏幕亮度_Windows 11调
- Python文件和流处理指南_高效读写大体积数据文
- Windows资源管理器总是卡顿或重启怎么办?(修
- Golang如何实现基本的用户注册_Golang用
- 如何高效获取循环末次生成的 NumPy 数组最后一
- Windows 10怎么录屏_Windows 10
- Flask 表单数据通过 SMTP 发送邮件的完整
- Win11怎么设置默认浏览器Chrome_Wind
- 如何在Golang中优化文件读写性能_使用缓冲和并
- Mac如何解压zip和rar文件?(推荐免费工具)
- C++中的std::shared_from_thi
- Python字符串操作教程_切片拼接与格式化详解
- Python日志系统设计与实现_高可观测性架构实战
- 如何在JavaScript中动态拼接PHP的bas
- 如何使用Golang recover捕获panic
- Win11怎么关闭通知消息_屏蔽Windows 1
- php订单日志怎么记录评价_php记录订单评价日志
- Go 中实现 Python urllib.quot
- Mac如何修改Hosts文件?(本地开发与屏蔽网站
- 如何解决Windows时间不准的问题?(自动同步设
- Win10如何更改开机密码_Windows10登录
- c# 在ASP.NET Core中管理和取消后台任
- 如何在Golang中编写异步函数测试_Golang
- Win11怎么关闭OneDrive同步_Win11
- 如何使用Golang反射创建map对象_动态生成键
- 如何用::实现单例模式_php静态方法与作用域操作
- Win11怎么设置任务栏图标大小_Windows1
- C++ static_cast和dynamic_c
- c++中的std::conjunction和std
- 如何使用Golang指针与接口结合_实现方法调用和
- Win11怎么制作U盘启动盘_Win11原版系统安
- Windows电脑如何截屏?(四种快捷方法)
- Win11怎么关闭开机声音_Win11系统启动提示
- Go 中实现 Python urllib.quot
- php能控制zigbee模块吗_php通过串口与c
- Windows怎样关闭开始菜单广告_Windows

QQ客服