KUROL3 3 Denunciar post Postado Junho 24, 2011 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_acao FROM ocorrencias O WHERE 2 = IF (O.id_departamento_release = 0 , O.id_departamento, O.id_departamento_release) AND O.id_usuario_fechou = 0 ORDER BY if (O.id_usuario_fechou = 0, 0, 1), data_proxima_acao ASC LIMIT 0, 16 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Junho 25, 2011 Teria algum indicador se fechamento além de id_usuario_fechou ? Ele e data_proxima_acao poderiam ser as chaves de um índice. Compartilhar este post Link para o post Compartilhar em outros sites
KUROL3 3 Denunciar post Postado Junho 25, 2011 O 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 Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Junho 26, 2011 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 ... Compartilhar este post Link para o post Compartilhar em outros sites