Hola buenas tengo una consulta donde quiero encontrar si en una tabla llamada "final"  es > 0 y me la muestre, pero veo que es poco optimizada y super lenta.
 
SELECT
  articulos.id_encriptado,
  articulos.id,
  articulos.ref,
  articulos.titulo_1,
  articulos.descripcion_1, 
  articulos.precio1 as precio, 
  articulos.iva_incluido,
  articulos.id_plazos_entrega, 
  articulos.id_dto, 
  articulos.id_iva, 
  articulos.comprar
FROM
  articulos_subcategorias,
  articulos
WHERE
(
articulos_subcategorias.id_articulos = articulos.id && 
articulos_subcategorias.id_categorias ='3' && 
articulos.publicado ='si' && 
articulos.tienda LIKE '%1%' && 
articulos.visualizar='inf' && 
precio1 != 0 && 
  (
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '4') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '8') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '9') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '3') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '5') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '10') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '1') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '2') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '7') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '15') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '12') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '14') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '16') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '17') > 0 ||
    (SELECT SUM(entradas)-SUM(salidas) as final FROM stock WHERE stock.id_articulo = articulos.id && id_almacen = '13') > 0) 
  )
)
ORDER BY 
  articulos.ordenar ASC
LIMIT
    0,48 
 
Como se podria hacer que si encuentra en algun almacen > 0 me lo muestre pero sin tantas condicionales || y más optimizada?
 
Muchísimas gracias 
  
 

