1

我正在用 C++ 编写一个程序,以通过 MySql C++ 连接器访问 MySQL 中的表。

我从用户(通过 GUI 或 Xml 文件)检索记录。

以下是我的问题:

  1. 我是否应该先在表中搜索给定的记录,如果不存在则追加,

  2. 或者追加记录,如果记录是唯一的,让MySQL追加记录?

这是我的示例表:

mysql> describe ing_titles;
+----------+----------+------+-----+---------+-------+
| Field    | Type     | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| ID_Title | int(11)  | NO   | PRI | NULL    |       |
| Title    | char(32) | NO   |     | NULL    |       |
+----------+----------+------+-----+---------+-------+

根据判断,我正在寻找一种解决方案,使我的程序能够快速响应用户。

在开发过程中,我有一些小表(少于 5 条记录),但我希望在我正式发布应用程序时它们会增长。

仅供参考:我在 Windows XP 和 Vista 上使用 Visual Studion 2008、C++、wxWidgets 和 MySQL C++ 连接器。

4

1 回答 1

1

UNIQUE用约束标记有问题的字段并使用INSERT ... ON DUPLICATE KEY UPDATEor INSERT IGNORE

如果记录已经存在,前者将更新记录,后者将什么也不做。

首先搜索表效率不高,因为它需要到服务器的两次往返:第一次搜索,第二次插入(或更新)。

上面的语法在一句话中做同样的事情。

于 2010-01-29T17:39:43.180 回答