Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CamiloDourado

Lentidão usando Order BY

Recommended Posts

Estou com um problema para usar order by no MySQL 8, um exemplo é esse select abaixo usando o order by, estou passando esse como exemplo, mais estou com o mesmo problema de lentidão com todas as consultas que preciso ordenar. Já criei índice em todos os campos usados em (where, join e order by) e mesmo assim fica com os tempos ( 70.047 sec / 0.047 sec com order by ) ( 0.187 sec / 2.516 sec  sem o order by ).

Abaixo a query e o dump das tabelas usadas.

 

Select                                                                                                                 
     movimentacao.*,                                                                                                      
     coalesce(chaveNFe, substr(originXML.IdNFe, 4)) as lookup_chave,                                                      
     emp.GuidSystemEmpresa as lookup_GuidEmitente,                                                                    
     pessoa.NmNome         as lookup_GuidDestinatario,                                                                
     emp.DsLoja            as lookup_emitente,                                                                        
     pessoa.NmNome         as lookup_destinatario,                                                                    
     (select case                                                                                                     
                        when NfeCancelada          = '1' then 'Cancelada'                                                  
                        when NFeCanceladaForaPrazo = '1' then 'Cancelada'                                                  
                        when NfeAutorizada         = '1' then 'Emitida'                                                    
                      else 'Pendente'                                                                                      
                    end                                                                                                      
                                                                                                                   
                    from obrigacoesfiscaisnfestatus obrig                                                                    
                    where obrig.GuidMovimentacao = movimentacao.GuidMovimentacao                                             
                    order by obrig.DtHoraEnvio desc                                                                          
                    limit 1                                                                                                  
            ) as lookup_status,                                                                                          
  natOp.Nome as lookup_guidFiscalNaturezaOp,                                                                           
  (                                                                                                                    
   if(movimentacao.origin <> "PED", "",                                                                                
   (select NrPedido from financeiromovimento                                                                           
    where GuidOrigem = (select GuidPedidoFormaPagamento from pedidoFormaPagamento                                      
                        where GuidPedido = movimentacao.guidOrigin                                                     
                        limit 1)                                                                                       
       limit 1))                                                                                                          
  ) as lookup_NrPedido,                                                                                                
     tot.vNF as lookup_TotalNF                                                                                            
                                                                                                                          
From movimentacao                                                                                                      
left join movimentacaoxmlimportado originXML on (tpNF = 'E' and originXML.GuidMovimentacaoXMLImportado = GuidOrigin)
left join fiscalNaturezaOp         natOp     on (NatOp.GuidFiscalNaturezaOp = movimentacao.GuidFiscalNaturezaOp)       
left join movimentacaoEmitente     emit      on (emit.GuidMovimentacao      = movimentacao.GuidMovimentacao)           
left join movimentacaodestinatario dest      on (dest.GuidMovimentacao      = movimentacao.GuidMovimentacao)           
left join movimentacaoTotalIcms    tot       on (tot.GuidMovimentacao       = movimentacao.GuidMovimentacao)           
left join systemEmpresa emp    on (emp.GuidSystemEmpresa = emit.GuidEmitente)                                      
left join pessoa        pessoa on (pessoa.GuidPessoa     = dest.GuidDestinatario)                                  
Where movimentacao.tpNF='S'
And movimentacao.dhSaiEnt between '2017-12-01' and '2017-12-31 23:59:59'
Order by pessoa.NmNome

 

 

 

-- MySQL dump 10.13  Distrib 8.0.11, for Win64 (x86_64)
--
-- ------------------------------------------------------
-- Server version    8.0.11

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
 SET NAMES utf8 ;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;

--
-- Table structure for table `fiscalnaturezaop`
--

DROP TABLE IF EXISTS `fiscalnaturezaop`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `fiscalnaturezaop` (
  `GuidFiscalNaturezaOp` varbinary(16) NOT NULL,
  `CodNatOP` char(6) DEFAULT NULL,
  `nome` varchar(100) NOT NULL,
  `descricao` varchar(100) DEFAULT NULL,
  `tipo` char(1) DEFAULT NULL,
  `GuidCFOPOrigem` varbinary(16) DEFAULT NULL,
  `GuidCFOPDestino` varbinary(16) DEFAULT NULL,
  `GuidUfOrigem` varbinary(16) DEFAULT NULL,
  `GuidUfDestino` varbinary(16) DEFAULT NULL,
  `UsuCad` varbinary(16) DEFAULT NULL,
  `momCad` datetime DEFAULT NULL,
  `UsuAlt` varbinary(16) DEFAULT NULL,
  `momAlt` datetime DEFAULT NULL,
  `UsuCan` varbinary(16) DEFAULT NULL,
  `momCan` datetime DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  PRIMARY KEY (`GuidFiscalNaturezaOp`),
  UNIQUE KEY `GuidFiscalNaturezaOp_UNIQUE` (`GuidFiscalNaturezaOp`),
  KEY `idxCod` (`CodNatOP`),
  KEY `idxNome` (`nome`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `movimentacao`
--

DROP TABLE IF EXISTS `movimentacao`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `movimentacao` (
  `GuidMovimentacao` varbinary(16) NOT NULL,
  `origin` char(3) DEFAULT NULL,
  `guidOrigin` varbinary(16) DEFAULT NULL,
  `chaveNFe` varchar(50) DEFAULT NULL,
  `chaveNFeRef` varchar(50) DEFAULT NULL,
  `GuidFiscalNaturezaOp` varbinary(16) DEFAULT NULL,
  `indPag` char(1) DEFAULT NULL,
  `xmod` char(2) DEFAULT NULL,
  `serie` varchar(3) DEFAULT NULL,
  `nNF` int(11) DEFAULT NULL,
  `dhEmi` datetime DEFAULT NULL,
  `dhSaiEnt` datetime DEFAULT NULL,
  `tpNF` char(1) DEFAULT NULL,
  `cMunFG` varchar(7) DEFAULT NULL,
  `cUF` char(2) DEFAULT NULL,
  `tpImp` char(1) DEFAULT NULL,
  `tpEmis` char(1) DEFAULT NULL,
  `cDV` decimal(1,0) DEFAULT NULL,
  `tpAmb` char(1) DEFAULT NULL,
  `finNFe` char(1) DEFAULT NULL,
  `procEmi` char(1) DEFAULT NULL,
  `InfoCompContribuinte` text,
  `GuidInfoFisco` varbinary(16) DEFAULT NULL,
  `DescCompFisco` text,
  `verProc` varchar(20) DEFAULT NULL,
  `nProt` varchar(20) DEFAULT NULL,
  `GuidPlanoContas` varbinary(16) DEFAULT NULL,
  `UsuCad` varbinary(16) DEFAULT NULL,
  `momCad` datetime DEFAULT NULL,
  `UsuAlt` varbinary(16) DEFAULT NULL,
  `momAlt` datetime DEFAULT NULL,
  `UsuCan` varbinary(16) DEFAULT NULL,
  `momCan` datetime DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  `refIdNFe` int(11) DEFAULT NULL,
  `refIdNFeOld` int(11) DEFAULT NULL,
  `GuidSystemEmpresa` varbinary(16) DEFAULT NULL,
  PRIMARY KEY (`GuidMovimentacao`),
  UNIQUE KEY `GuidMovimentacao_UNIQUE` (`GuidMovimentacao`),
  KEY `idxDhSaiEnt` (`dhSaiEnt`),
  KEY `idxnNF` (`nNF`),
  KEY `idxGuidOrigin` (`guidOrigin`),
  KEY `idxUsuCad` (`UsuCad`),
  KEY `idxTPNF` (`tpNF`),
  KEY `idxOrigin` (`origin`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `movimentacaodestinatario`
--

DROP TABLE IF EXISTS `movimentacaodestinatario`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `movimentacaodestinatario` (
  `GuidMovimentacaoDestinatario` varbinary(16) NOT NULL,
  `GuidMovimentacao` varbinary(16) DEFAULT NULL,
  `GuidDestinatario` varbinary(16) DEFAULT NULL,
  `CNPJ_CPF` varchar(14) DEFAULT NULL,
  `xLgr` varchar(60) DEFAULT NULL,
  `nro` varchar(60) DEFAULT NULL,
  `xCpl` varchar(60) DEFAULT NULL,
  `UF` char(2) DEFAULT NULL,
  `cMun` varchar(7) DEFAULT NULL,
  `xBairro` varchar(60) DEFAULT NULL,
  `CEP` varchar(8) DEFAULT NULL,
  `UsuCad` varbinary(16) DEFAULT NULL,
  `momCad` datetime DEFAULT NULL,
  `UsuAlt` varbinary(16) DEFAULT NULL,
  `momAlt` datetime DEFAULT NULL,
  `UsuCan` varbinary(16) DEFAULT NULL,
  `momCan` datetime DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  PRIMARY KEY (`GuidMovimentacaoDestinatario`),
  UNIQUE KEY `GuidMovimentacaoDestinatario_UNIQUE` (`GuidMovimentacaoDestinatario`),
  KEY `idxMovimentacao` (`GuidMovimentacao`),
  KEY `idxGuidDestinatario` (`GuidDestinatario`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `movimentacaoemitente`
--

DROP TABLE IF EXISTS `movimentacaoemitente`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `movimentacaoemitente` (
  `GuidMovimentacaoEmitente` varbinary(16) NOT NULL,
  `GuidMovimentacao` varbinary(16) DEFAULT NULL,
  `GuidEmitente` varbinary(16) DEFAULT NULL,
  `CNPJ_CPF` varchar(14) DEFAULT NULL,
  `xLgr` varchar(60) DEFAULT NULL,
  `nro` varchar(60) DEFAULT NULL,
  `xCpl` varchar(60) DEFAULT NULL,
  `UF` char(2) DEFAULT NULL,
  `cMun` varchar(7) DEFAULT NULL,
  `xBairro` varchar(60) DEFAULT NULL,
  `CEP` varchar(8) DEFAULT NULL,
  `UsuCad` varbinary(16) DEFAULT NULL,
  `momCad` datetime DEFAULT NULL,
  `UsuAlt` varbinary(16) DEFAULT NULL,
  `momAlt` datetime DEFAULT NULL,
  `UsuCan` varbinary(16) DEFAULT NULL,
  `momCan` datetime DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  PRIMARY KEY (`GuidMovimentacaoEmitente`),
  UNIQUE KEY `GuidMovimentacaoEmitente_UNIQUE` (`GuidMovimentacaoEmitente`),
  KEY `idxMovimentacao` (`GuidMovimentacao`),
  KEY `idxGuidEmitente` (`GuidEmitente`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `movimentacaototalicms`
--

DROP TABLE IF EXISTS `movimentacaototalicms`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `movimentacaototalicms` (
  `GuidMovimentacaoTotalICMS` binary(16) NOT NULL,
  `GuidMovimentacao` binary(16) DEFAULT NULL,
  `vBC` decimal(15,2) DEFAULT NULL,
  `vICMS` decimal(15,2) DEFAULT NULL,
  `vICMSDeson` decimal(15,2) DEFAULT '0.00',
  `vBCST` decimal(15,2) DEFAULT NULL,
  `vST` decimal(15,2) DEFAULT NULL,
  `vProd` decimal(15,2) DEFAULT NULL,
  `vFrete` decimal(15,2) DEFAULT NULL,
  `vSeg` decimal(15,2) DEFAULT NULL,
  `vDesc` decimal(15,2) DEFAULT NULL,
  `vII` decimal(15,2) DEFAULT NULL,
  `vIPI` decimal(15,2) DEFAULT NULL,
  `vPIS` decimal(15,2) DEFAULT NULL,
  `vCOFINS` decimal(15,2) DEFAULT NULL,
  `vOutro` decimal(15,2) DEFAULT NULL,
  `vNF` decimal(15,2) DEFAULT NULL,
  `vTotTrib` decimal(15,2) DEFAULT '0.00',
  `UsuCad` binary(16) DEFAULT NULL,
  `momCad` datetime DEFAULT NULL,
  `UsuAlt` binary(16) DEFAULT NULL,
  `momAlt` datetime DEFAULT NULL,
  `UsuCan` binary(16) DEFAULT NULL,
  `momCan` datetime DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  PRIMARY KEY (`GuidMovimentacaoTotalICMS`),
  KEY `idxMovimentacao` (`GuidMovimentacao`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `movimentacaoxmlimportado`
--

DROP TABLE IF EXISTS `movimentacaoxmlimportado`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `movimentacaoxmlimportado` (
  `GuidMovimentacaoXMLImportado` varbinary(16) NOT NULL,
  `IdNFe` varchar(50) DEFAULT NULL,
  `XML` mediumtext,
  `NaturezaOperacao` varchar(100) DEFAULT NULL,
  `DtEmissao` date DEFAULT NULL,
  `NumeroNF` varchar(15) DEFAULT NULL,
  `TipoNF` char(1) DEFAULT NULL,
  `cnpjEmitente` varchar(45) DEFAULT NULL,
  `NmEmitente` varchar(100) DEFAULT NULL,
  `GuidSystemEmpresa` varbinary(16) DEFAULT NULL,
  `cnpjDestinatario` varchar(45) DEFAULT NULL,
  `NmDestinatario` varchar(100) DEFAULT NULL,
  `LgImportado` char(1) DEFAULT NULL,
  `UsuCad` varbinary(16) DEFAULT NULL,
  `MomCad` datetime DEFAULT NULL,
  `UsuAlt` varbinary(16) DEFAULT NULL,
  `MomAlt` datetime DEFAULT NULL,
  `UsuCan` varbinary(16) DEFAULT NULL,
  `MomCan` datetime DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  PRIMARY KEY (`GuidMovimentacaoXMLImportado`),
  UNIQUE KEY `GuidMovimentacaoXMLImportado_UNIQUE` (`GuidMovimentacaoXMLImportado`),
  UNIQUE KEY `IdNFe_UNIQUE` (`IdNFe`),
  KEY `idxMovimentacaoXMLImportadoIdNFe` (`IdNFe`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `obrigacoesfiscaisnfestatus`
--

DROP TABLE IF EXISTS `obrigacoesfiscaisnfestatus`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `obrigacoesfiscaisnfestatus` (
  `GuidObrigacoesFiscaisNfeStatus` binary(16) NOT NULL,
  `GuidMovimentacao` binary(16) DEFAULT NULL,
  `modelo` int(11) DEFAULT NULL,
  `XMLNfe` text,
  `DtHoraEnvio` datetime DEFAULT NULL,
  `UsuEnvio` binary(16) DEFAULT NULL,
  `XmlValido` char(1) DEFAULT NULL,
  `NfeAutorizada` char(1) DEFAULT NULL,
  `NFeCancelada` char(1) DEFAULT NULL,
  `NFeCanceladaForaPrazo` char(1) DEFAULT NULL,
  `Msg` text,
  `RetornoWS` blob,
  `Status` varchar(100) DEFAULT NULL,
  `Layout` blob,
  `Versao` varchar(40) DEFAULT NULL,
  `Ambiente` varchar(20) DEFAULT NULL,
  `Motivo` text,
  `Recibo` text,
  `Protocolo` varchar(100) DEFAULT NULL,
  `ChaveNFe` varchar(100) DEFAULT NULL,
  `NFeRetorno` blob,
  `UsuCad` binary(16) DEFAULT NULL,
  `MomCad` datetime DEFAULT NULL,
  `UsuAlt` binary(16) DEFAULT NULL,
  `MomAlt` datetime DEFAULT NULL,
  `UsuCan` binary(16) DEFAULT NULL,
  `MomCan` datetime DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  PRIMARY KEY (`GuidObrigacoesFiscaisNfeStatus`),
  KEY `idxNfeAutorizada` (`NfeAutorizada`),
  KEY `idxDtHoraEnvio` (`DtHoraEnvio`),
  KEY `idxGuidMovimentacao` (`GuidMovimentacao`),
  KEY `idxNfeCancelada` (`NFeCancelada`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `pessoa`
--

DROP TABLE IF EXISTS `pessoa`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `pessoa` (
  `GuidPessoa` varbinary(16) NOT NULL,
  `CodPessoa` varchar(6) DEFAULT NULL,
  `NmNome` varchar(100) DEFAULT NULL,
  `DsTipoPessoa` char(1) DEFAULT NULL,
  `DsApelido` varchar(100) DEFAULT NULL,
  `DsTelefone` varchar(16) DEFAULT NULL,
  `DsEmail` varchar(120) DEFAULT NULL,
  `GuidPessoaST` varbinary(16) DEFAULT NULL,
  `GuidSystemEmpresa` varbinary(16) DEFAULT NULL,
  `UsuCad` varbinary(16) DEFAULT NULL,
  `MomCad` datetime DEFAULT NULL,
  `UsuAlt` varbinary(16) DEFAULT NULL,
  `MomAlt` datetime DEFAULT NULL,
  `UsuCan` varbinary(16) DEFAULT NULL,
  `MomCan` datetime DEFAULT NULL,
  `isCliente` char(1) DEFAULT NULL,
  `isFornecedor` char(1) DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  PRIMARY KEY (`GuidPessoa`),
  UNIQUE KEY `GuidPessoa_UNIQUE` (`GuidPessoa`),
  KEY `idxCodPessoa` (`CodPessoa`),
  KEY `idxNmNome` (`NmNome`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;

--
-- Table structure for table `systemempresa`
--

DROP TABLE IF EXISTS `systemempresa`;
/*!40101 SET @saved_cs_client     = @@character_set_client */;
 SET character_set_client = utf8mb4 ;
CREATE TABLE `systemempresa` (
  `GuidSystemEmpresa` binary(16) NOT NULL,
  `CodLoja` varchar(3) DEFAULT NULL,
  `CNPJ` char(14) DEFAULT NULL,
  `RazaoSocial` varchar(60) DEFAULT NULL,
  `NomeFantasia` varchar(120) DEFAULT NULL,
  `DsLoja` varchar(120) DEFAULT NULL,
  `CNAE` varchar(100) DEFAULT NULL,
  `InscEstadual` varchar(45) DEFAULT NULL,
  `InscMunicipal` varchar(45) DEFAULT NULL,
  `DtAbertura` date DEFAULT NULL,
  `Tributacao` char(1) DEFAULT NULL,
  `crt` char(1) DEFAULT NULL,
  `Telefone` varchar(14) DEFAULT NULL,
  `Email` varchar(120) DEFAULT NULL,
  `Perfil` char(1) DEFAULT NULL,
  `Atividade` char(1) DEFAULT NULL,
  `GuidPlanoContasEntrada` binary(16) DEFAULT NULL,
  `GuidPlanoContasNFe` binary(16) DEFAULT NULL,
  `GuidPlanoContasNFCe` binary(16) DEFAULT NULL,
  `GuidPlanoContasReceber` binary(16) DEFAULT NULL,
  `GuidPlanoContasPagar` binary(16) DEFAULT NULL,
  `IndNatPJ` char(2) DEFAULT NULL,
  `Suframa` varchar(9) DEFAULT NULL,
  `Matriz` char(1) DEFAULT NULL,
  `LgCompleto` char(1) DEFAULT NULL,
  `UsuCad` binary(16) DEFAULT NULL,
  `MomCad` datetime DEFAULT NULL,
  `UsuAlt` binary(16) DEFAULT NULL,
  `MomAlt` datetime DEFAULT NULL,
  `UsuCan` binary(16) DEFAULT NULL,
  `MomCan` datetime DEFAULT NULL,
  PRIMARY KEY (`GuidSystemEmpresa`),
  KEY `GuidPais_idx` (`CNPJ`),
  KEY `idxCodLoja` (`CodLoja`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
/*!40101 SET character_set_client = @saved_cs_client */;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;

/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;

-- Dump completed on 2018-09-20 19:12:36

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.