Hola de nuevo Patriarka:
En lugar de utilizar alguna de las opciones que te puse arriba, elegiste una que es de entrara una barbaridad y la que peor desempeño tiene...
Vayamos por partes:
1. No es recomendable que en el FROM pongas las tablas que intervienen en una consulta separadas por comas (tal como lo haces):
Código:
...
from Factura F, Remito R
...
Esto de entrada está haciendo un PRODUCTO CARTESIANO, ya que en ningún lugar estás poniendo en el WHERE de qué manera están relacionadas estas tablas...
observa este ejemplo:
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | uno |
| 2 | dos |
| 3 | tres |
+------+-------------+
+------+-------------+
| id | descripcion |
+------+-------------+
| 1 | uno |
| 2 | dos |
| 4 | cuatro |
+------+-------------+
Ahora bien, si quitas del WHERE la condición que colocaste, tienes algo como esto:
Código MySQL:
Ver original+------+-------------+------+-------------+
| id | descripcion | id | descripcion |
+------+-------------+------+-------------+
| 1 | uno | 1 | uno |
| 2 | dos | 1 | uno |
| 3 | tres | 1 | uno |
| 1 | uno | 2 | dos |
| 2 | dos | 2 | dos |
| 3 | tres | 2 | dos |
| 1 | uno | 4 | cuatro |
| 2 | dos | 4 | cuatro |
| 3 | tres | 4 | cuatro |
+------+-------------+------+-------------+
Esto es un producto cartesiano... Tu consulta es ineficiente porque antes de evaluar el WHERE interno, se realiza el producto que te menciono... Si te tomaste un tiempo para leer la última liga que te puse, de habrás dado cuenta que la mejor opción es hacerlo con un LEFT JOIN
Cita: That's why the best way to search for missing values in MySQL is using a LEFT JOIN / IS NULL or NOT IN rather than NOT EXISTS.
En otras palabra, en lugar de tu consulta, lo que podrías hacer es algo como esto:
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 3 | tres |
+------+-------------+
es decir, de tu tabla1, el id=3 es el único que no existe en tu tabla2... Otra forma sería con el NOT IN:
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 3 | tres |
+------+-------------+
Y también con el NOT EXISTS, que aunque es menos eficiente que los dos anteriores:
Código MySQL:
Ver original+------+-------------+
| id | descripcion |
+------+-------------+
| 3 | tres |
+------+-------------+
No sé, pero desde mi punto de vista tu consulta no sirve para lo que planteas de inicio, y si funcionara, te puedo apostar mi comida a que cualquiera de las tres consultas que pongo tendría un mejor rendimiento que la que propones.
Saludos
Leo