MySQL 为什么在实际开发中一般不使用外键约束

2023-11-03

阿里开发手册:【强制】不得使用外键与级联,一切外键概念必须在应用层解决。

1.外键优点:

  • 保证数据的完整性和一致性

  • 级联操作方便

  • 将数据完整性判断托付给了数据库完成,减少了程序的代码量

2.外键缺点:

  • 业务数据生成顺序,未必一定可以先生成外键的值,再生成明细数据

  • 有外键约束,修数据比较麻烦

  • 外键影响数据库性能,当任务多资源少时,产生锁死,产生并发高,每次修改数据都需要去另外一个表检查数据,需要获取额外的锁

  • 多库情况下,外键不生效

3.弊远远大于利,一般不使用

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MySQL 为什么在实际开发中一般不使用外键约束 的相关文章

  • 有没有办法刷新 Oracle 中 PL/SQL 的输出?

    我有一个从 shell 脚本中调用的 SQL 脚本 需要很长时间才能运行 目前它包含dbms output put line不同点的声明 这些打印语句的输出会出现在日志文件中 但仅在脚本完成后才会出现 有什么方法可以确保脚本运行时输出出现在
  • 哪个 SQL 语句更快? (有与在哪里......)

    SELECT NR DZIALU COUNT NR DZIALU AS LICZ PRAC DZIALU FROM PRACOWNICY GROUP BY NR DZIALU HAVING NR DZIALU 30 or SELECT NR
  • Python postgreSQL sqlalchemy 查询 DATERANGE 列

    我有一个预订系统 并将预订日期范围保存在 日期范围 列中 booked date Column DATERANGE nullable False 我已经知道我可以通过以下方式访问实际日期booked date lower or booked
  • 根据多列删除重复项

    我使用以下内容列出了重复项 select s MessageId t from Message s join select ToUserId FromUserId count as qty from Message group by ToU
  • 如果 Count(*) 为零,则返回 NULL

    我有以下 mysql 查询 SELECT count student name AS total student school name FROM student LEFT JOIN school info ON school info s
  • 无法在 Windows 中安装 mysql-python(较新版本)

    I have mysql pythonv1 2 4 在我的机器 Windows 8 上安装得很好 我正在使用Python 2 7 每次尝试升级到 v1 2 5 时 我总是遇到以下错误 从 v1 3 7 开始仍然发生 C Users User
  • 连接MySQL服务器的Shell脚本

    我有大约 20 个不同的 MySQL 实例 我想轻松连接到它们 而不必每次都输入完整的地址 用户名和超长的密码 我可以做什么来编写此过程的脚本 这样我所要做的就是为每个实例运行一个 sh 脚本 到目前为止我所拥有的 保存为 instance
  • 如何使用 mysqli 设置排序规则?

    我的数据库使用 utf8 czech ci 排序规则 我也想将其设置为我的数据库连接 如果我不想要默认的 utf8 general ci Mysqli set charset 不会让我设置排序规则 Here https bugs php n
  • SQL 用逗号替换点

    我有以下代码 SELECT cast Listenpreis 1 19 as decimal 29 2 as Listenpreis FROM SL M03KNE dbo ARKALK 我得到这个值 5 59 我尝试将点替换为 komma
  • 案例与解码

    参考之前的一篇question https stackoverflow com questions 3193384 display sql custom text from table column result 我想知道是否总是可以更换D
  • Sql查询增加多个项目的项目价值价格

    我想编写 Sql 查询来按百分比增加商品价格 场景是 在表中 我有 3 列 ID 商品名称 价格 Example If item Name is T shirt Increase price by 10 item Name is Jins
  • MYSQL 连接结果集在 IN () 期间在 where 子句中擦除结果?

    重磅编辑 最初的问题是基于对 IN 如何处理联接结果集中的列的误解 我认为 IN some join some column 会将结果列视为列表并循环遍历每一行 事实证明它只查看第一行 因此 改编后的问题是 MySQL 中是否有任何东西可以
  • 从表变量中获取列的明确名称

    我可以这样声明一个表变量 DECLARE tv source TABLE c1 int providerName varchar 50 providerSMS varchar 50 如果我执行以下命令 我会看到类似于以下内容的表名称 468
  • 在Django中通过ManyToMany关系添加一个对象

    Django 的 ManyToMany 字段 https docs djangoproject com en dev ref models fields django db models ManyToManyField可以使用填充my fi
  • 使用 C++ 连接器的 C++ mysql 连接 bad_alloc

    尝试建立一个简单的 mysql 连接 但得到一个bad alloc即使查看类似的帖子 我也不知道如何解决这个问题 这是我的代码 include
  • 限制 SQL 查询的响应时间

    我在这里发布了一个关于我的 gridview 绑定的问题 将GridView与多条记录绑定 https stackoverflow com questions 5599704 bind gridview with many records
  • ubuntu上rails mysql gem问题

    Ruby on Rails 我想调用本地主机上的控制器 但服务器说 缺少 mysql gem 将其添加到您的 Gemfile 中 gem mysql 2 8 1 问题 当我点击 gem list 命令时 我得到了一个包含 mysql 2 8
  • 时态数据库设计,有一些变化(实时行与草稿行)

    我正在考虑实现对象版本控制 同时需要同时拥有活动对象和草稿对象 并且可以利用某人在这方面的经验的见解 因为我开始怀疑是否有可能在没有潜在可怕的黑客攻击的情况下实现这一点 为了示例 我将把它分解为带有标签的帖子 但我的用例更一般 涉及缓慢改变
  • 邮政编码 10 位数字字符使用的约束检查

    我有一张桌子 上面有Char 10 列类型 命名postal Code我需要对所有值进行约束检查 就像 10 位数字一样1234567890没有别的 我使用以下内容 CONSTRAINT CH PCDigit CHECK PostalCod
  • 如何在数据库中存储世界各地的所有地理位置?

    我在一家旅游网站工作 我需要存储游客去过的旅游景点 我需要位置表中的地点是唯一的 以便我可以知道特定地点的受欢迎程度等 我还需要存储在我身边的所有国家 州 城市 因为我不能依赖用户输入 数据库是MySQL 看到这些位置的可用数据集 我发现存

随机推荐

  • Java垃圾回收机制深入理解

    文章目录 一 简介 二 Java内存结构 三 什么是垃圾 四 垃圾收集算法 1 标记 清除算法 Mark and Sweep 2 复制算法 Copying 3 标记 整理算法 Mark and Compact 4 分代收集算法 Genera
  • 微软live服务器地址,在Mail中设置windows Live hotmail方法

    Mail是苹果系统的内置软件 是一款非常棒的软件 用起来很自然 起码和outlook比起来给人的感觉是这样 接下来是小编为大家收集的在Mail中设置windows Live hotmail方法 希望能帮到大家 在Mail中设置windows
  • c++ 在一行中输入若干个数,以空格间隔

    在一行中输入若干个数 以空格间隔 直到输入回车以结束 这是我在做PTA的题的时候发现回车输入逻辑有先后区别 题目如下 给出若干个正整数 请找出出现次数最多的数 输入格式 在一行中输入若干个数 以空格间隔 读入数的总个数不超过5000 输出格
  • ModuleNotFoundError: No module named ‘distutils.util 的解决方法

    ModuleNotFoundError No module named distutils util 的解决方法 使用 curl https bootstrap pypa io get pip py o get pip py sudo py
  • python轮胎缺陷检测_基于数字图像处理的轮胎缺陷检测

    摘要 随着汽车工业和道路交通运输业的迅猛发展 由于子午线轮胎具有胎面不容易变形 比较良好的稳定性 使用安全和耐用等特点 并且子午线轮胎的功能明显优越于普通斜交胎 其应用越来越普遍 已成为世界轮胎发展中的主要产品 但是子午线轮胎在制造过程中工
  • Navicat for mysql连接mysql时遇到的问题及其解决方法

    今天电脑重新装mysql 遇到了一个问题 authentication plugin caching 大概这样 懒得写了 找了好多教程 乱七八糟的就是解决不了 最后找到一篇博客https blog csdn net u011182575 a
  • 7. python爬虫——基于xpath爬取58同城房源信息

    python爬虫 基于xpath爬取58同城房源信息 1 需求 2 分析 3 代码 4 实现效果 1 需求 获取58同城上所有房源的标题信息 https bj 58 com ershoufang 2 分析 使用抓包工具进行分析 发现所有的房
  • vue2-element,vue3-element-plus 的列表翻页的序号

    前言 这里整理下 vue2 vue3中用饿了么框架的列表 序号随页增加的功能 vue2 page 当前页 pageSize 一页显示多少条 type index index indexMethod 序号翻页连续排序 indexMethod
  • 【踩坑笔记】从零开始在Linux和Windows部署安装kIash

    klash是一个基于规则的路由 可以为多地服务器之间配置特定的连接规则 加快后端业务响应速度 从零开始在Linux和Windows部署安装klash 一 材料准备 二 安装步骤 windows端 linux端 三 问题and踩坑 一 材料准
  • 敏捷开发流程

    一 敏捷起源 2001年2月 Martin Fowler Jim Highsmith等17位著名的软件开发专家齐聚在美国犹他州雪鸟滑雪圣地 举行了一次敏捷方法发起者和实践者的聚会 在这次会议上面 他们正式提出了Agile 敏捷开发 这个概念
  • 如何在php中获取curl请求的请求头信息及相应头信息

    1 获取请求头信息 可以在curl exec函数执行前 添加代码curl setopt ch CURLINFO HEADER OUT true 在curl exec函数执行后 通过 curl getinfo ch CURLINFO HEAD
  • dom模板列表-2

    模板列表
  • TensorRT 初探(1)—— conv2d:IConvolutionLayer

    tensorrt之conv2d计算详解 环境搭建 简介 代码 设置prepadding和postpadding prepadding postpadding与paddingNd冲突时 设置padding mode 总结 附录 环境搭建 环境
  • 浅谈JVM基本结构

    目录 1 JVM概念 2 JVM基本结构 3 JVM存储数据案例 1 JVM概念 JVM是Java Virtual Machine Java虚拟机 的缩写 JVM是一种用于计算设备的规范 它是一个虚构出来的计算机 是通过在实际的计算机上仿真
  • app提交上架最新流程 ios

    一 上架基本需求资料1 苹果开发者账号 公司已有可以不用申请 需要开通开发者功能 每年 99 美元 2 开发好的APP 二 证书上架版本需要使用正式的证书 1 创建证书 Apple Developer 2 上传证书 Sign In Appl
  • css3 隐藏滚动条但是有滚动效果的方法

    前沿 相信好多小伙伴都遇到过这个需求 那就来说一下 原理 就是在滚动区域的外部在套一个盒子 设置外部这个盒子宽比内部的少20px 其实也就是滚动条的宽度 然后在overflow hidden就可以了 接下来看个小例子
  • Unity把png图片转换为sprite格式

    最近自己在做游戏项目 经常碰到导入的图片是png格式 但是要转换为sprite格式才能应用 以下是转换的简单方式 不需要代码的 1选中要转换的png图片 在Inspector窗口查看属性 2在窗口中找到Texture Type选择Sprit
  • Java程序员项目面试

    如何做自我介绍 自我介绍该怎么做 要介绍什么 自我介绍尽可能控制在3分钟以内 关于技术介绍以外例如 性格 爱好等尽可能忽略 自我介绍时应该主要包含下面几个内容 个人信息 15秒 学习经历 30秒 工作经历 2分钟 其中社招工作经历最为重要
  • Python 根据Excel修改文件名称 封装成.exe程序

    目录 前言 一 实验环境 二 实现步骤 1 设计思路 2 引入库 3 具体代码 4 封装成exe程序 5 功能展示 总结 前言 公司想要一个可以在任何一个Windows电脑上能使用的工具 可以根据Excel表格内容来修改图片的名称 我本来打
  • MySQL 为什么在实际开发中一般不使用外键约束

    阿里开发手册 强制 不得使用外键与级联 一切外键概念必须在应用层解决 1 外键优点 保证数据的完整性和一致性 级联操作方便 将数据完整性判断托付给了数据库完成 减少了程序的代码量 2 外键缺点 业务数据生成顺序 未必一定可以先生成外键的值