博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库优化
阅读量:5217 次
发布时间:2019-06-14

本文共 1026 字,大约阅读时间需要 3 分钟。

主键

不能重复, 不可以和业务逻辑有关, 不可以修改(尽量),所以身份证等 虽然是唯一标识ID但是 不可以作为主键, 因为其和业务逻辑有关, 并且身份证升位的话 也很麻烦.

一般情况下我们将id作为主键的字段名,并且将其设置为自增类型. 这样就不需要担心主键重复,也不需要自己手动生成主键.

有个东西 全局唯一GUID类型:使用一种全局唯一的字符串作为主键,类似8f55d96b-8acc-4636-8cb8-76bf8abc2f57. GUID算法通过网卡的MAC地址(唯一),时间戳和随机数保证任意计算机上生成的字符串都是不同的,大部分编程语言都内置了GUID算法,可以自己预算出 主键.

外键

我们可以使用定位外键约束的方式去定义外键, 其中的外键约束名称fk_class_id可以任意,FOREIGN KEY (class_id)指定了这个外键将关联到

classes表的id列(即classes表的主键), 通过定义外键约束,关系型数据库可以保证无法插入无效数据,例如一个学生的班级定义为999这个不存在的班级.

ALTER TABLE studentsADD CONSTRAINT fk_class_idFOREIGN KEY (class_id)REFERENCES classes (id);

但是如果设置外键约束会导致降低数据库的性能,大部分互联网应用程序为了求追性能,并不设置外键约束,而是仅靠应用程序来保证自身逻辑的正确性,这种情况下class_id仅仅是一个普通的列,只是它起到了外键的作用而已.

可以将一个大表拆分为两个一对一的小表,将经常用到的字段和用不到的字段分开,以提高效率.

索引

在关系型数据库中如果有上万甚至上亿条数据,在查找记录的时候,想要获取非常快的速度就需要使用索引.

索引是关系数据库中对某一列或者多个列的值进行预排序的数据结构.通过使用索引,可以让数据库系统不必扫描整个表,而是直接定位到符合条件的记录这样就大大加快了查询速度.

索引实质上就是对索引列进行散列操作, 因此在选择索引列的时候要注意散列的程度越高查询的速度越快, 因为散列的特性如果选择的列散列效果不好的话(例如将性别作为散列列),这样会导致性能下降还不如不去设置散列. 所以一般情况下散列都是对于 唯一表示列并且作为查询条件的列 进行散列.

转载于:https://www.cnblogs.com/A-FM/p/11139858.html

你可能感兴趣的文章
比callback更简洁的链式执行promise
查看>>
android permission
查看>>
javascript获取textarea中所选文本的开始位置、结束位置和选择的文本
查看>>
【译】在Asp.Net中操作PDF - iTextSharp - 使用字体
查看>>
事务备份还原分离附加
查看>>
JSch - Java实现的SFTP(文件上传详解篇)
查看>>
一些注意点
查看>>
.net 文本框只允许输入XX,(正则表达式)
查看>>
C#修饰符
查看>>
20.核心初始化之异常向量表
查看>>
[BSGS][哈希]luogu P3846 可爱的质数
查看>>
Python 第四十五章 MySQL 内容回顾
查看>>
iostat参数说明
查看>>
js 封装获取元素的第一个元素
查看>>
iOS 获取Home键指纹验证
查看>>
Python-Mac 安装 PyQt4
查看>>
P2571 [SCOI2010]传送带
查看>>
哈希表1
查看>>
用Data Url (data:image/jpg;base64,)将小图片生成数据流形式
查看>>
实验2-2
查看>>