Tengo curiosidad por la desventaja de citar los números enteros en MySQL consultasDesventajas de citar enteros en una consulta Mysql?
Por ejemplo
SELECT col1,col2,col3 FROM table WHERE col1='3';
VS
SELECT col1,col2,col3 FROM table WHERE col1= 3;
Si hay un costo de rendimiento, ¿cuál es el tamaño de la misma y por qué ocurre? ¿Hay alguna otra desventaja aparte de ese rendimiento?
Gracias Andrew
Editar: La razón de esta pregunta
1. Porque quiero aprender la diferencia porque soy curiosa
2. Estoy experimentando con una forma de pasar las claves compuestas de mi base de datos en mi código php como psudo-Id-keys (PIK). Estos PIK son los utilizados para apuntar al registro. Por ejemplo, dada una clave principal (AreaCode, Categoría, RecordDtm)
Mi PIK en la url se vería así:
index.php?action=hello&Id=20001,trvl,2010:10:10 17:10:45
Y yo seleccionaría este registro así:
$Id = $_POST['Id'];//equals 20001,trvl,2010:10:10 17:10:45
$sql = "SELECT AreaCode,Category,RecordDtm,OtherColumns.... FROM table WHERE (AreaCode,Category,RecordDtm) = ({$Id});
$mysqli->query($sql):
......and so on.
En este punto, la consulta no funcionará debido a la fecha y hora (que debe citarse) y está abierta a la inyección sql porque no he escapado de esos valores. Dado el hecho de que no siempre sabré cómo se construyen mis PIK, escribiría una función que divide el Id PIK en las comas, limpia cada parte con real_escape_string y la vuelve a juntar con los valores citados. Por ejemplo: $ Id = "'20001', 'trvl', '2010: 10: 10 17:10:45'" Por supuesto, en esta función que se está rompiendo y limpiando el Id podría verificar si el valor es un número o no. Si es un número, no lo cites. Si es algo más que una cadena, cítelo.
¿Por qué no hacer siempre lo correcto en lugar de preocuparse por el rendimiento de tener el analizador de consultas corregir sus errores? –
¿Por qué no siempre se apega a * algo * en lugar de preocuparse por optimizaciones prematuras? – strager
Porque quiero aprender un poco más acerca de por qué no siempre ponemos comillas alrededor de todos los valores en las consultas. Estoy experimentando con una manera de pasar las claves compuestas de la base de datos como ID de un solo psudo en el código php. – andrew