JOIN E PROBLEMA COM TIME_OUT

MESTRE 05/05/2017 07:53:51
#473748
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..
       


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:
MESTRE 05/05/2017 08:25:08
#473749
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?
GUIMORAES 05/05/2017 08:47:51
#473750
MESTRE,

Como está a indexação das tabelas?
DS2T 05/05/2017 08:53:06
#473751
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!
NILSONTRES 05/05/2017 09:21:26
#473752
MY_COMAND.Connection = oCn_MYSQL
MY_COMAND.CommandTimeout = 400
MY_COMAND.CommandText = V_INSTR
MY_RE = MY_COMAND.ExecuteReader
MESTRE 05/05/2017 09:58:57
#473753
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..
MESTRE 05/05/2017 11:20:16
#473754
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?
MESTRE 05/05/2017 15:47:33
#473761
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!
Tópico encerrado , respostas não são mais permitidas