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;-)