У меня много связанных таблиц в запросе, допустим, что следующие таблицы обязательно находятся в конфликте, который замедляет запрос.
Это идентификаторы, которые связаны
Tabla A: ventacompra(#id_ventacompra,id_factura, id_albaran)
Tabla B: factura(#id_factura,id_cliente)
Tabla C: albaran(#id_albaran,id_cliente)
Tabla D: cliente(#id_cliente)
Запрос
SELECT *
FROM ventacompra v
LEFT JOIN factura f ON v.id_factura = f.id_factura
LEFT JOIN albaran al ON v.id_albaran = al.id_albaran
LEFT JOIN cliente cl ON (cl.id_cliente = f.id_cliente OR cl.id_cliente = al.id_cliente)
Этот запрос занимает 3 секунды, потому что он имеет тысячи записей. Если я удаляю ИЛИ "cl.id_cliente = al.id_cliente", запрос выполняется от 3 секунд до 0,220 мс, но в таблице отображается нулевой клиент.
Я не знаю, смогу ли я это сделать некоторый тип Join, так что в случае NULL он меняется на другую таблицу или другой способ ускорения запроса.
____ EDIT ____
Это новый запрос, и теперь время составляет 300 мс.
CASE
WHEN clf.nombre IS NOT NULL THEN clf.nombre
WHEN cla.nombre IS NOT NULL THEN cla.nombre
END AS nombre
LEFT JOIN cliente clf ON (clf.id_cliente = f.id_cliente and transacion='venta')
LEFT JOIN cliente cla ON (cla.id_cliente = al.id_cliente and transacion ='venta')