¿Cuál es la principal diferencia entre INSERT INTO table VALUES ..
y INSERT INTO table SET
?
Ejemplo:
INSERT INTO table (a, b, c) VALUES (1,2,3)
INSERT INTO table SET a=1, b=2, c=3
¿Y qué hay del rendimiento de estos dos?
sql
mysql
performance
Irmantas
fuente
fuente
INSERT INTO table SET
no sea estándar. Parece mucho más claro. Supongo que tendré que usar laINSERT INTO table ([column name, column name b]) VALUES (['value a', 'value b'])
sintaxis de todos modos para salvarme de los problemas si me transfiero a Postgres.Respuestas:
Por lo que puedo decir, ambas sintaxis son equivalentes. El primero es el estándar SQL, el segundo es la extensión de MySQL.
Por lo tanto, deberían ser exactamente equivalentes en cuanto a rendimiento.
http://dev.mysql.com/doc/refman/5.6/en/insert.html dice:
fuente
INSERT INTO table SET
? ¿Es esto posible?Creo que la extensión está destinada a permitir una sintaxis similar para inserciones y actualizaciones. En Oracle, un truco sintáctico similar es:
fuente
INSERT ... SET ...
yINSERT ... VALUES ...
. Para la función, tiene un código más corto y más rápido de escribir, una mayor legibilidad y la eliminación de errores tipográficos causados por mezclar el orden de las columnas al escribir suVALUES
cláusula. Mi instinto me dice que en la red lo bueno supera a lo malo, pero su juicio puede ser diferente.Dado que las sintaxis son equivalentes (de todos modos en MySQL), prefiero la
INSERT INTO table SET x=1, y=2
sintaxis, ya que es más fácil de modificar y detectar errores en la declaración, especialmente cuando se insertan muchas columnas. Si tiene que insertar 10 o 15 o más columnas(x, y) VALUES (1,2)
, en mi opinión , es realmente fácil mezclar algo usando la sintaxis.Si la portabilidad entre diferentes estándares SQL es un problema, entonces tal vez
INSERT INTO table (x, y) VALUES (1,2)
sería preferible.Y si desea insertar varios registros en una sola consulta, no parece que la
INSERT INTO ... SET
sintaxis funcione, mientras que la otra sí. Pero en la mayoría de los casos prácticos, de todos modos está recorriendo un conjunto de registros para hacer inserciones, aunque podría haber algunos casos en los que tal vez construya una consulta grande para insertar un grupo de filas en una tabla en una consulta, en lugar de una consulta para cada fila, podría tener una mejora en el rendimiento. Realmente no lo se.fuente