sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo verifico si el valor ya existe en la tabla?

Use una unique constraint . Intente insertar/actualizar el registro y detectar la excepción lanzada cuando se viola la restricción única. Esta es la única forma de garantizar direcciones de correo electrónico únicas; primero verificar y luego actualizar es propenso a problemas de simultaneidad, ya que es posible que otra persona actualice su registro al mismo valor que está tratando de establecer justo después de que hizo la verificación y antes de actualizar el registro.

Además:aprenda a usar where -cláusulas. Ahora está recuperando TODOS los registros, iterándolos, etc., lo que requiere muchos recursos innecesariamente, lleva demasiado tiempo y es simplemente un desperdicio. Si desea buscar un registro que coincida con un criterio, escriba:

Select foo, bar from table where baz = 123

Donde baz = 123 es su criterio. Imagine lo que sucedería cuando tenga 500 o incluso 500 000 registros en su configuración actual. La base de datos ejecutaría su consulta, reuniría TODAS las filas de esa base de datos, las transferiría a su aplicación donde su aplicación iteraría los 500,000 resultados. O le pide a la base de datos que haga lo que es bueno (y por qué lo está usando en primer lugar):deme todos los registros que coincidan con el criterio X. Obtendrá 1 o ninguno de los registros (dada la restricción):1 =algún registro coincide con su criterio, ninguno =no existe ningún registro. Ahorra transferir y "tener que mirar manualmente" 499,999 registros;-)