MySQL: Añadir registros: Buscar luego agregar o agregar solamente
-
24-09-2019 - |
Pregunta
Estoy escribiendo un programa, en C ++, para acceder a las tablas en MySQL a través del conector MySQL C ++.
Recupero un registro del usuario (a través de GUI o archivo XML).
Aquí están mis preguntas:
¿Debo buscar la tabla primero para el registro dado? Luego agregar si no existe,
¿O agregar el registro y dejar que MySQL agregue el registro si es único?
Aquí está mi tabla de ejemplo:
mysql> describe ing_titles;
+----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+----------+------+-----+---------+-------+
| ID_Title | int(11) | NO | PRI | NULL | |
| Title | char(32) | NO | | NULL | |
+----------+----------+------+-----+---------+-------+
En el juicio, estoy buscando una solución que permita que mi programa responda rápidamente al usuario.
Durante el desarrollo, tengo pequeñas tablas (menos de 5 registros), pero espero que crezcan cuando lento formalmente la aplicación.
FYI: Estoy usando el conector Visual Studion 2008, C ++, WXWidgets y MySQL C ++ en Windows XP y Vista.
Solución
Marque el campo en cuestión con un UNIQUE
restricción y uso INSERT ... ON DUPLICATE KEY UPDATE
o INSERT IGNORE
.
El primero actualizará los registros si ya existe, el segundo simplemente no hará nada.
Buscar primero la tabla no es eficiente, ya que requiere dos tripas redondas al servidor: el primero en buscar, el segundo para insertar (o actualizar).
Las sintaxis anteriores hacen lo mismo en una oración.