- Agregados índices en BD (payments, houses) para mejorar queries - Consolidada carga de pagos: 12 queries → 1 query - Implementado caché de monthly_bills en vista (eliminadas ~2,400 queries) - Nuevo método Payment::updateBatch() para guardado masivo con transacciones - Reducción total: ~2,437 queries → 13 queries (99.5% mejora) - Tiempo de carga: 3-5s → <0.5s - Tiempo de guardado: 8-12s → 1-2s
26 lines
1.0 KiB
SQL
26 lines
1.0 KiB
SQL
-- =====================================================
|
|
-- Optimización de Índices para Página de Pagos
|
|
-- Fecha: 2026-02-14
|
|
-- Propósito: Mejorar rendimiento de consultas en payments
|
|
-- =====================================================
|
|
|
|
-- Índice compuesto para búsquedas por año y mes
|
|
-- Mejora: SELECT ... WHERE year = ? AND month = ?
|
|
-- Si el índice ya existe, este comando generará un warning pero continuará
|
|
CREATE INDEX idx_payments_year_month ON payments(year, month);
|
|
|
|
-- Índice compuesto para búsquedas por casa y año
|
|
-- Mejora: SELECT ... WHERE house_id = ? AND year = ?
|
|
CREATE INDEX idx_payments_house_year ON payments(house_id, year);
|
|
|
|
-- Índice para ordenamiento de casas por número
|
|
-- Mejora: ORDER BY CAST(number AS UNSIGNED)
|
|
CREATE INDEX idx_houses_number ON houses(number);
|
|
|
|
-- Verificar índices creados
|
|
SELECT 'Índices de payments:' as 'Tabla';
|
|
SHOW INDEX FROM payments WHERE Key_name LIKE 'idx_payments%';
|
|
|
|
SELECT 'Índices de houses:' as 'Tabla';
|
|
SHOW INDEX FROM houses WHERE Key_name LIKE 'idx_houses%';
|