当前位置: 首页 > 面试题库 >

设置MySQL唯一键或检查应用程序部分中的重复项?

罗俭
2023-03-14
问题内容

哪一个更可靠并具有更好的性能?设置MySQL唯一键并使用INSERT IGNORE或首先检查数据库中是否存在数据并根据结果采取行动?

如果答案是第二个,是否有办法进行单个SQL查询而不是两个?

更新:我问,因为我工作的公司的同事们认为应对此类问题应在应用程序部分完成,据他们所述,该部分更为可靠。


问题答案:

您的应用程序 不会 捕获重复项。

两个并发调用可以插入相同的数据,因为在您的应用程序检查唯一性时,每个进程都看不到另一个。每个进程都认为可以插入。

您可以强制执行某种序列化操作,但是会遇到瓶颈和性能限制。而且您 有其他客户端写入数据库,即使它只是一个发行脚本

这就是为什么通常存在唯一索引和约束之类的原因。外键,触发器,检查约束,NULL / NIOT NULL,数据类型约束都可以用来增强数据完整性

一些代码猴子也认为他们可以做得更好,这是自大的。



 类似资料:
  • 假设我有一个名为“student_course”的Dynamo DB表。我想存储每个学生在大学学习的课程。一个学生可以一次学习多个课程,一个课程可以一次有多个学生。所以基本上它是一个多映射。 我的数据访问模式只有一个用例- 一次获取一个学生和一门课程的记录,即获取每个学生ID和CourseId组合的数据。它保证对于学生ID和课程ID组合,只有一条记录可用。 为了实现这一点,我可以通过以下两种方式存

  • 问题内容: 我想在我的MySQL表上添加一个唯一性约束。该表包含四列: 此约束必须检查对于new行,new和都未包含在或中。 例子 : 有没有办法定义这样的约束? 问题答案: 您可以通过触发器来做到这一点 注意: 由于您使用的MySQL版本缺少技巧,因此当找到具有相同地址的行时,违反对其中一列的约束。 这是 SQLFiddle 演示。取消注释最后一个插入语句之一,然后单击确定。这些插入不会成功。

  • 问题内容: 这个问题已经在这里有了答案 : 7年前关闭。 可能重复: MySQL错误1153-收到的数据包大于’max_allowed_pa​​cket’字节 嗨,我收到错误消息: 但是我没有对我的源代码进行任何更改,托管表明它们在服务器设置方面没有进行任何更改。 我不知道发生了什么 但是我试图找到原因。 那么,如何通过php脚本检查mysql变量? 并且可以在源代码中进行设置吗? 问题答案: 在

  • 我创建了一个android照片应用程序,并在其中添加了使用intent在facebook、twitter、instagram上共享图像的功能,但当我共享图像时,如果设备上未安装facebook、twitter、instagram应用程序,该应用程序将崩溃。

  • 我试图显示一个从服务器获取数据并显示其中所有信息的表。代码正在从获取的API打印我的表标题和第一个对象的信息。 这给了我一个错误。 警告:数组或迭代器中的每个子级都应具有唯一的“键”属性。检查的渲染方法

  • 本文向大家介绍检查一列以获取MySQL中的唯一值,包括了检查一列以获取MySQL中的唯一值的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用子查询。让我们首先创建一个演示表 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 输出如下 这是检查列唯一值的查询 输出如下