CamiloDourado 0 Denunciar post Postado Setembro 20, 2018 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