Lentidão usando Order BY
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:36Discussão (0)
Carregando comentários...