检查来自mySQL数据库的唯一值

本文关键字:唯一 数据库 mySQL 检查 | 更新日期: 2023-09-27 18:11:08

我有一个表单,其中有几个字段,每个字段必须是唯一的。执行此查询的最佳方法是什么?

我应该打开一个连接和一个mySqlAdapter并做:

myDataAdapter.Fill(myDataSet, "table"); 

对应每个值(每次更改SQL查询),或者是否有更优化的方法

Thanks in advance

Doron西奈

检查来自mySQL数据库的唯一值

听起来像是一个不寻常的要求。如果你能详细说明细节,也许会有更好的解决办法。

鉴于您所说的,我理解您需要知道表单上任何几个输入字段的输入值是否已经存在于"table"中。

出现两个选项:

1)询问DB

比如

SELECT column1, column2 FROM table WHERE column1='value1' OR column2='value2'

如果你没有得到任何行返回,所有的值都是唯一的(注意,虽然另一个应用程序用户可以在SELECT之后输入相同的值…如果你需要帮助的话,那是另一个问题的主题。

如果返回了行,返回行的值将告诉您DB中已经存在的内容。

2)让DB强制唯一性

在每个列上创建一个唯一的索引,该索引必须是唯一的。请注意,在数据库上放置大量索引会显著降低插入和更新的性能,并消耗磁盘空间。

请注意,如果没有对需要唯一的字段进行索引,选项1可能会太慢(取决于数据库大小和硬件)。

除了Eric指出的选项之外,我将提供另一个选项。您可以使用一个数据库调用加载所有现有值。出于性能原因,您可能希望将唯一值加载到HashSet中。然后,根据HashSet检查表单值,并确保这些值在HashSet中不存在。

是这样的。你需要考虑到你在这里谈论的数据量。如果数据需要在整个数据库表中是唯一的,那么您可能需要使用Eric建议的unique约束。你不希望在未来使用我上面提到的方法,或者构建一个性能可能很差的SQL查询(Eric也提到过),从而出现可伸缩性问题。

正确的答案取决于需要强制唯一性的数据的结构和数量。