ALTER TABLE productosimg 
ADD INDEX idx_producto_estado_fecha (
    codproductop, 
    estado, 
    fechaingreso
);

ALTER TABLE productos 
ADD INDEX idx_filtros_completos (
    codsucursal, 
    estado, 
    codfamilia, 
    codmarca, 
    codorigen, 
    codcolor,
    existencia
);
ALTER TABLE productos ADD INDEX idx_catalogo_ordenado ( codsucursal, estado, codfamilia );

ALTER TABLE productos 
ADD FULLTEXT idx_fulltext_busqueda (producto, nroparte, codigobarra);

-- Para JOIN entre productos e imágenes
ALTER TABLE productosimgfotos 
ADD INDEX idx_join_productos (codproductof, portada, orden);

-- Para JOIN con categorías y subcategorías
ALTER TABLE productos_categorias 
ADD INDEX idx_join_categorias (codproducto, codcat);

ALTER TABLE productos_subcategorias 
ADD INDEX idx_join_subcategorias (codproducto, codsubfamilias, codfa);

-- Para JOIN con precios y presentaciones
ALTER TABLE productos_presentaciones 
ADD INDEX idx_join_precios (codproductop, codsucursalp, precioxpublico);

-- Para JOIN con variaciones
ALTER TABLE productos_variacion 
ADD INDEX idx_join_variaciones (codproductop, codsucursalp, stock);

CREATE INDEX idx_productos_texto ON productos(producto(150));
CREATE INDEX idx_productos_codigobarra ON productos(codigobarra);

CREATE INDEX idx_productosimg_codproductop ON productosimg(codproductop);
CREATE INDEX idx_productosimg_estado_mostrar ON productosimg(estado, mostrar);
CREATE INDEX idx_productosimg_fechaingreso ON productosimg(fechaingreso DESC);
CREATE INDEX idx_productosimg_estrellas ON productosimg(estrellas DESC);

CREATE INDEX idx_productosimgfotos_codproductof ON productosimgfotos(codproductof);
CREATE INDEX idx_productosimgfotos_portada_orden ON productosimgfotos(portada, orden);
CREATE INDEX idx_productosimgfotos_codproductof_portada ON productosimgfotos(codproductof, portada);

-- 4. ÍNDICES PARA productos_categorias
CREATE INDEX idx_prodcat_codproducto ON productos_categorias(codproducto);
CREATE INDEX idx_prodcat_codcat ON productos_categorias(codcat);
CREATE INDEX idx_prodcat_combinado ON productos_categorias(codproducto, codcat);

CREATE INDEX idx_prodsubcat_codproducto ON productos_subcategorias(codproducto);
CREATE INDEX idx_prodsubcat_codsubfamilias ON productos_subcategorias(codsubfamilias);
CREATE INDEX idx_prodsubcat_codfa_subfa ON productos_subcategorias(codfa, codsubfamilias);

CREATE INDEX idx_presentaciones_codproductop ON productos_presentaciones(codproductop);
CREATE INDEX idx_presentaciones_codsucursalp ON productos_presentaciones(codsucursalp);
CREATE INDEX idx_presentaciones_precios ON productos_presentaciones(
    precioxpublico,
    precioxmayor,
    precioxmenor
);

CREATE INDEX idx_presentaciones_combinado ON productos_presentaciones(
    codproductop,
    codsucursalp,
    precioxpublico
);
CREATE INDEX idx_variacion_codproductop ON productos_variacion(codproductop);
CREATE INDEX idx_variacion_codsucursalp ON productos_variacion(codsucursalp);
CREATE INDEX idx_variacion_nombre ON productos_variacion(nombre_variacion(100));
CREATE INDEX idx_variacion_stock ON productos_variacion(stock);
CREATE INDEX idx_variacion_combinado ON productos_variacion(
    codproductop,
    codsucursalp,
    stock,
    precioxpublico
);

CREATE INDEX idx_productos_cat_precio ON productos(codfamilia, existencia);
CREATE INDEX idx_productos_marca_estado ON productos(codmarca, estado, codsucursal);

-- Para consultas de productos con descuento
CREATE INDEX idx_productos_descuento ON productos(descproducto DESC);

-- Para consultas de stock bajo
CREATE INDEX idx_productos_stock_bajo ON productos(existencia, stockminimo, estado);

-- Para consultas de productos nuevos
CREATE INDEX idx_productosimg_nuevos ON productosimg(fechaingreso DESC, estado, mostrar);


ALTER TABLE productos ADD FULLTEXT ft_producto_nroparte (producto, nroparte);
CREATE INDEX idx_productos_rango_precios ON productos(descproducto);
CREATE INDEX idx_productos_orden_fecha ON productos(codsucursal, estado);
CREATE INDEX idx_productos_grupo_categoria ON productos(codfamilia, codmarca, existencia);