JOIN E PROBLEMA COM TIME_OUT
Fala galera estou com um problemão daqueles.. tentei reiniciar o servidor MySQL, alterar as configurações e NADA essa consulta me demora um tempão e ta dando Time_Out na tela
do meu sistema.. alguém sabe o que pode ser?
Total de registros por tabela:
receber_hc_copylab (total 582 rows).
ordemservicocotacao_hc_copylab (total 372 rows).
ordemservicocotacaoitem_hc_copylab (total 1000 rows).
Obs: explicando ordemservicocotacao = proposta comercial, ordemservicocotacaoitem = itens da proposta comercial, receber_hc = entrada dos produtos recebidos.. tenho outra tabela más que não estou usando no Join que é a ordemservico que são as Ordem[ô]s de serviço geradas após recebimento só que faço Join normalmente entre proposta, itens da proposta e ordem serviço e não dá nada.. porém estou com problema no join acima que é do setor de recebimento de materiais e matérias primas..
Alguém ja passou por isso? meu sistema manda uma exception de Time_out quando carrega..
Print da Exception:
do meu sistema.. alguém sabe o que pode ser?
Total de registros por tabela:
receber_hc_copylab (total 582 rows).
ordemservicocotacao_hc_copylab (total 372 rows).
ordemservicocotacaoitem_hc_copylab (total 1000 rows).
Obs: explicando ordemservicocotacao = proposta comercial, ordemservicocotacaoitem = itens da proposta comercial, receber_hc = entrada dos produtos recebidos.. tenho outra tabela más que não estou usando no Join que é a ordemservico que são as Ordem[ô]s de serviço geradas após recebimento só que faço Join normalmente entre proposta, itens da proposta e ordem serviço e não dá nada.. porém estou com problema no join acima que é do setor de recebimento de materiais e matérias primas..
Alguém ja passou por isso? meu sistema manda uma exception de Time_out quando carrega..
Try
If rdOS.Checked = True Then
strSql = [Ô]SELECT orc.Codigo AS [ô]Sequencial[ô],orc.Mes AS [ô]Mês[ô],orc.Ano AS [ô]Ano[ô],ite.item AS [ô]Item[ô],hc.produto AS [ô]Produto[ô],ite.qtditem AS [ô]QTD[ô],ite.uniditem AS [ô]Unidade[ô],hc.datareceb AS [ô]Data[ô],orc.dias AS [ô]Dias[ô],orc.devolucao AS [ô]Devolução[ô],orc.cliente AS [ô]Solicitante[ô],orc.solicitante AS [ô]Interessado[ô],ite.status,orc.Codcli,orc.CodSol,hc.OCP,PreTeste,Prova,ContraProva,Testemunha,Complemento,orc.numprocesso as [ô]Número do Processo[ô],hc.PedidoCompra as [ô]Pedido de Compra[ô] FROM [Ô] &
[Ô]ordemservicocotacao_hc_copylab orc INNER JOIN ordemservicocotacaoitem_hc_copylab ite ON (CONCAT(orc.codigo,orc.mes,orc.ano) = CONCAT(ite.numero,ite.mes,ite.ano)) INNER JOIN receber_hc_copylab hc ON (CONCAT(hc.sequencial,hc.mes,hc.ano,hc.item) = CONCAT(ite.numero,ite.mes,ite.ano,ite.'Item')) WHERE orc.situacao=[ô]FECHADA[ô] AND (ite.status=[ô]2[ô] OR ite.status=[ô]3[ô]) AND CONCAT(orc.codigo,orc.mes,orc.ano) = [ô][Ô] & txtPesqProp.Text & [Ô][ô] ORDER By hc.datareceb DESC,orc.codigo DESC,orc.mes DESC,orc.ano DESC,ite.item[Ô]
ElseIf rdTodos.Checked = True Then
Dim inicio, fim As String
inicio = (Convert.ToDateTime(dtIn.Text).ToString([Ô]yyyy-MM-dd[Ô]))
fim = (Convert.ToDateTime(dtFim.Text).ToString([Ô]yyyy-MM-dd[Ô]))
strSql = [Ô]SELECT orc.Codigo AS [ô]Sequencial[ô],orc.Mes AS [ô]Mês[ô],orc.Ano AS [ô]Ano[ô],ite.item AS [ô]Item[ô],hc.produto AS [ô]Produto[ô],ite.qtditem AS [ô]QTD[ô],ite.uniditem AS [ô]Unidade[ô],hc.datareceb AS [ô]Data[ô],orc.dias AS [ô]Dias[ô],orc.devolucao AS [ô]Devolução[ô],orc.cliente AS [ô]Solicitante[ô],orc.solicitante AS [ô]Interessado[ô],ite.status,orc.Codcli,orc.CodSol,hc.OCP,PreTeste,Prova,ContraProva,Testemunha,Complemento,orc.numprocesso as [ô]Número do Processo[ô],hc.PedidoCompra as [ô]Pedido de Compra[ô] FROM [Ô] &
[Ô]ordemservicocotacao_hc_copylab orc INNER JOIN ordemservicocotacaoitem_hc_copylab ite ON (CONCAT(orc.codigo,orc.mes,orc.ano) = CONCAT(ite.numero,ite.mes,ite.ano)) INNER JOIN receber_hc_copylab hc ON (CONCAT(hc.sequencial,hc.mes,hc.ano,hc.item) = CONCAT(ite.numero,ite.mes,ite.ano,ite.'Item')) WHERE orc.situacao=[ô]FECHADA[ô] AND (ite.status=[ô]2[ô] OR ite.status=[ô]3[ô]) AND hc.datareceb BETWEEN [ô][Ô] & inicio & [Ô][ô] AND [ô][Ô] & fim & [Ô][ô] ORDER By hc.datareceb DESC,orc.codigo DESC,orc.mes DESC,orc.ano DESC,ite.item[Ô]
ElseIf rbSolInt.Checked = True Then
strSql = [Ô]SELECT orc.Codigo AS [ô]Sequencial[ô],orc.Mes AS [ô]Mês[ô],orc.Ano AS [ô]Ano[ô],ite.item AS [ô]Item[ô],hc.produto AS [ô]Produto[ô],ite.qtditem AS [ô]QTD[ô],ite.uniditem AS [ô]Unidade[ô],hc.datareceb AS [ô]Data[ô],orc.dias AS [ô]Dias[ô],orc.devolucao AS [ô]Devolução[ô],orc.cliente AS [ô]Solicitante[ô],orc.solicitante AS [ô]Interessado[ô],ite.status,orc.Codcli,orc.CodSol,hc.OCP,PreTeste,Prova,ContraProva,Testemunha,Complemento,orc.numprocesso as [ô]Número do Processo[ô],hc.PedidoCompra as [ô]Pedido de Compra[ô] FROM [Ô] &
[Ô]ordemservicocotacao_hc_copylab orc INNER JOIN ordemservicocotacaoitem_hc_copylab ite ON (CONCAT(orc.codigo,orc.mes,orc.ano) = CONCAT(ite.numero,ite.mes,ite.ano)) INNER JOIN receber_hc_copylab hc ON (CONCAT(hc.sequencial,hc.mes,hc.ano,hc.item) = CONCAT(ite.numero,ite.mes,ite.ano,ite.'Item')) WHERE orc.situacao=[ô]FECHADA[ô] AND (ite.status=[ô]2[ô] OR ite.status=[ô]3[ô]) AND (orc.Cliente LIKE [ô]%[Ô] & txtPesqSol.Text & [Ô]%[ô] OR orc.Solicitante LIKE [ô]%[Ô] & txtPesqSol.Text & [Ô]%[ô]) ORDER By ORDER By hc.datareceb DESC,orc.codigo DESC,orc.mes DESC,orc.ano DESC,ite.item[Ô]
Else
Dim Data_hoje As DateTime = DateTime.Now
Dim mes As String
Dim ano As String
mes = Format(Data_hoje, [Ô]MM[Ô])
ano = Format(Data_hoje, [Ô]yyyy[Ô])
strSql = [Ô]SELECT orc.Codigo AS [ô]Sequencial[ô],orc.Mes AS [ô]Mês[ô],orc.Ano AS [ô]Ano[ô],ite.item AS [ô]Item[ô],hc.produto AS [ô]Produto[ô],ite.qtditem AS [ô]QTD[ô],ite.uniditem AS [ô]Unidade[ô],hc.datareceb AS [ô]Data[ô],orc.dias AS [ô]Dias[ô],orc.devolucao AS [ô]Devolução[ô],orc.cliente AS [ô]Solicitante[ô],orc.solicitante AS [ô]Interessado[ô],ite.status,orc.Codcli,orc.CodSol,hc.OCP,PreTeste,Prova,ContraProva,Testemunha,Complemento,orc.numprocesso as [ô]Número do Processo[ô],hc.PedidoCompra as [ô]Pedido de Compra[ô] FROM [Ô] &
[Ô]ordemservicocotacao_hc_copylab orc INNER JOIN ordemservicocotacaoitem_hc_copylab ite ON (CONCAT(orc.codigo,orc.mes,orc.ano) = CONCAT(ite.numero,ite.mes,ite.ano)) INNER JOIN receber_hc_copylab hc ON (CONCAT(hc.sequencial,hc.mes,hc.ano,hc.item) = CONCAT(ite.numero,ite.mes,ite.ano,ite.'Item')) WHERE orc.situacao=[ô]FECHADA[ô] AND (ite.status=[ô]2[ô] OR ite.status=[ô]3[ô]) and month(hc.datareceb) = [ô][Ô] & mes & [Ô][ô] and year(hc.datareceb)=[ô][Ô] & ano & [Ô][ô] ORDER By hc.datareceb DESC,orc.codigo DESC,orc.mes DESC,orc.ano DESC,ite.item[Ô]
End If
Dim cmd As MySqlCommand = New MySqlCommand(strSql, objConexao)
Dim da As MySqlDataAdapter = New MySqlDataAdapter(cmd)
Dim dt As DataTable = New DataTable
da.Fill(dt)
With grdReceber.ColumnHeadersDefaultCellStyle
.Font = New Font(grdReceber.Font, FontStyle.Bold)
End With
grdReceber.DataSource = dt
grdReceber.Columns(0).ReadOnly = False
With Me.grdReceber
.DefaultCellStyle.BackColor = Color.AliceBlue
.AlternatingRowsDefaultCellStyle.BackColor = Color.LightSkyBlue
.Font = New Font(grdReceber.Font, FontStyle.Bold)
End With
Me.grdReceber.EnableHeadersVisualStyles = True
grdReceber.Columns(0).Frozen = True
grdReceber.Columns(1).Frozen = True
grdReceber.Columns(2).Frozen = True
grdReceber.Columns(3).Frozen = True
grdReceber.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells
grdReceber.AutoSizeRowsMode = DataGridViewAutoSizeColumnsMode.AllCells
grdReceber.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
grdReceber.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
grdReceber.Columns([Ô]CodCli[Ô]).Visible = False
grdReceber.Columns([Ô]CodSol[Ô]).Visible = False
grdReceber.Columns([Ô]Solicitante[Ô]).DisplayIndex = 4
grdReceber.Columns([Ô]Interessado[Ô]).DisplayIndex = 5
grdReceber.ClearSelection()
Catch ex As Exception
MsgBox(ex.ToString)
Finally
objConexao.Close()
End Try
Print da Exception:
O problema é que hora da Time_Out hora nao para mesma pesquisa.. acredito que seja problema com o servidor, na outra empresa tem o mesmo comando e não acontece isso..
o que será que pode ser?
o que será que pode ser?
MESTRE,
Como está a indexação das tabelas?
Como está a indexação das tabelas?
Bom dia!
Quando você usa um gerenciador de banco de dados qualquer (MySQL Front, Navicat, etc) ... e processa essa mesma consulta, ele executa de boa? Demora muito tempo?
Faça esse teste, primeiro no localhost... depois tente acessar por outro computador na rede.
Isso vai ajudar a determinar se o problema está na rede, provedor de dados ou se é um problema no banco de dados mesmo...
Abraços!
Quando você usa um gerenciador de banco de dados qualquer (MySQL Front, Navicat, etc) ... e processa essa mesma consulta, ele executa de boa? Demora muito tempo?
Faça esse teste, primeiro no localhost... depois tente acessar por outro computador na rede.
Isso vai ajudar a determinar se o problema está na rede, provedor de dados ou se é um problema no banco de dados mesmo...
Abraços!
MY_COMAND.Connection = oCn_MYSQL
MY_COMAND.CommandTimeout = 400
MY_COMAND.CommandText = V_INSTR
MY_RE = MY_COMAND.ExecuteReader
MY_COMAND.CommandTimeout = 400
MY_COMAND.CommandText = V_INSTR
MY_RE = MY_COMAND.ExecuteReader
Citação::
MESTRE,
Como está a indexação das tabelas?
Tabela: ordemservicocotacao_hc (PROPOSTA)
PK codigo (big int) auto_incr
PK mes varchar (2)
PK ano varchar (4)
e mais campos
Tabela: ordemservicocotacao_hc (ITEM[ô]s PROPOSTA) <- Chave composta obs: Numero = codigo da tabela citada acima
PK Numero
PK mes
PK ano
PK item (int)
e mais campos
Tabela: receber_hc_copylab
PK id int Auto_Inc
PK Sequencial (mesmo que Numero e Codigo das tabelas anteriores)
PK Mes (mesmo que mes das tabelas anteriores)
PK Ano (mesmo que ano das tabelas anteriores)
PK Item (mesmo que item das tabelas anteriores)
Citação::
MY_COMAND.Connection = oCn_MYSQL
MY_COMAND.CommandTimeout = 400
MY_COMAND.CommandText = V_INSTR
MY_RE = MY_COMAND.ExecuteReader
Funcionou e parou o erro porém está demorando bastante o retorno... pq será?
Citação::
Bom dia!
Quando você usa um gerenciador de banco de dados qualquer (MySQL Front, Navicat, etc) ... e processa essa mesma consulta, ele executa de boa? Demora muito tempo?
Faça esse teste, primeiro no localhost... depois tente acessar por outro computador na rede.
Isso vai ajudar a determinar se o problema está na rede, provedor de dados ou se é um problema no banco de dados mesmo...
Abraços!
Não, ele demora a executar assim como o sistema utilizo o SQLyog..
Joguei numa Stored Procedure e olha a demora ..
Teria alguma forma de eu carregar isso linha a linha cada registro?? ai ele iria adicionando as linhas conforme pesquisando?
Teria alguma forma de eu carregar isso linha a linha cada registro?? ai ele iria adicionando as linhas conforme pesquisando?
Galera consegui resolver o problema... retirei todos os CONCAT que acabei descobrindo que pesa bastante e deu certo ..
Agradeço a todos que de alguma forma tentaram me ajudar!
Obrigado!
Agradeço a todos que de alguma forma tentaram me ajudar!
Obrigado!
Tópico encerrado , respostas não são mais permitidas