Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
OLá a todos vamos lá a mais um problema...
alguem tem alguma idéia de como otimiza-lo?
quando eu coloco para ordenar pela data_proxima_acao demora muitoooo tiro ele fica rápido
será que criar uma view resolve (da pra criar indice na view) estou usando engine innob
SELECT
IF (O.id_departamento_release = 0 , DATE(O.data), (
SELECT
DATE_FORMAT(DATE_ADD(W_OCR.data, INTERVAL W_OCR.dias_proxima_acao DAY), '%Y-%m-%d')
FROM
ocorrencias_releases W_OCR
WHERE
O.id = W_OCR.id_ocorrencia
ORDER BY
W_OCR.id
DESC LIMIT 1)
) as data_proxima_acaoO indicador que fechou é quando o id_usuario_fechou != 0 ou > 0 ou <> 0
veja como está os indices
Índices: [Documentação] Nome chave Tipo Cardinalidade Ação Campo
PRIMARY PRIMARY 29930 Editar Eliminar id
id_usuario INDEX 51 Editar Eliminar id_usuario
id_cliente INDEX 2137 Editar Eliminar id_cliente
id_usuario_para INDEX 205 Editar Eliminar id_usuario_para
id_departamento INDEX 77 Editar Eliminar id_departamento
id_imovel INDEX 9976 Editar Eliminar id_imovel
contrato_id INDEX 14965 Editar Eliminar contrato_id
contrato_sequencia
contrato_digito
id_tipo INDEX 482 Editar Eliminar id_tipo
id_empresa INDEX 7 Editar Eliminar id_empresa
id_departamento_release INDEX 31 Editar Eliminar id_departamento_release
Tipo_Dep_UsFec INDEX 1995 Editar Eliminar id_tipo
id_departamento
id_usuario_fechou
Pelo que pesquisei de forma simplória MySql não tem índices baseados em Funções.
Talvez a solução aí seria criar uma coluna redundante do tipo fechou? (0/1) e usá-la como índice.
Mas isto requer uma melhor análise do custo/benefício.
Isto poderia melhor também a codição de busca
... WHERE
2 = IF (O.id_departamento_release = 0 , O.id_departamento, O.id_departamento_release) AND O.id_usuario_fechou = 0 ...
Teria algum indicador se fechamento além de id_usuario_fechou ?
Ele e data_proxima_acao poderiam ser as chaves de um índice.