PROBLEMA COM SELECT MUITO LENTO

TIAGOPASSARELLA 06/06/2012 00:25:38
#403621
Boa Noite amigos tudo bem???
espero que sim...

estou com um problema que esta me deixando careca ja...rsss e nao consigo resolver... eu tneho um select conforme irei passar abaixo o codigo e ele esta dentro de um loop e ele simplesmente demora 1 segundo cada vez pra ler... e ai vem o problema essa tabela volta em torno de 25 mil registros... fico 2 horas pra ele gerar o que preciso....

o qeu sera que pode estar acontecendo ?? alguem pode me ajudar??? lembrando qeu o select abaixo esta dentro de um loop

   fcmd1.CommandText = [Ô]SELECT I.ID,I.DATAREG,I.NUMEROCUPOM,I.CODCLI,I.NUMEROECF,I.CODIGO,V.TOTAL,C.CNPJCPF,C.RAZAOSOCIAL FROM TBITENSVENDA AS I INNER JOIN ECF_TOTAL AS V ON (I.NUMEROCUPOM=V.NUMEROCUPOM) INNER JOIN TBCLIENTES AS C ON (I.CODCLI=C.CODCLIENTE) WHERE I.NUMEROCUPOM=[ô][Ô] & CP & [Ô][ô] AND I.DATAREG=[ô][Ô] & CDate(DT).ToString([Ô]MM/dd/yyyy[Ô]) & [Ô][ô][Ô]
FR1 = fcmd1.ExecuteReader()
If FR1.Read Then
ID_CUPOM = FR1([Ô]ID[Ô]).ToString
TOTAL_CUPOM = TrataValor(TOT_CP)
CNPJ_CLI = FR1([Ô]CNPJCPF[Ô]).ToString
NOME_CLI = FR1([Ô]RAZAOSOCIAL[Ô]).ToString
If CNPJ_CLI = [Ô][Ô] Then
CNPJ_CLI = [Ô]99999999999999[Ô]
End If
If NOME_CLI = [Ô][Ô] Then
NOME_CLI = [Ô]CONSUMIDOR FINAL[Ô]
End If
sql = [Ô][Ô]
sql = sql & [Ô]Insert Into ECFCUPOM ([Ô]
sql = sql & [Ô]ID,[Ô]
sql = sql & [Ô]ECF_CX,[Ô]
sql = sql & [Ô]COD_SIT,[Ô]
sql = sql & [Ô]NUM_DOC,[Ô]
sql = sql & [Ô]DT_DOC,[Ô]
sql = sql & [Ô]VL_DOC,[Ô]
sql = sql & [Ô]CPFCNPJ,[Ô]
sql = sql & [Ô]NOM_ADQ[Ô]
sql = sql & [Ô]) Values ([Ô]
sql = sql & [Ô][ô][Ô] & FR1([Ô]ID[Ô]).ToString & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & FR1([Ô]NUMEROECF[Ô]).ToString & [Ô][ô],[Ô]
sql = sql & [Ô][ô]00[ô],[Ô]
sql = sql & [Ô][ô][Ô] & FR1([Ô]NUMEROCUPOM[Ô]).ToString & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & CDate(DT).ToString([Ô]MM/dd/yyyy[Ô]) & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & Str(CDbl(TOTAL_CUPOM)) & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & CNPJ_CLI & [Ô][ô],[Ô]
sql = sql & [Ô][ô][Ô] & NOME_CLI & [Ô][ô])[Ô]
fcmd4 = New FbCommand(sql, FCnnSPED)
Try
fcmd4.ExecuteNonQuery()
Catch ex As Exception

End Try
KERPLUNK 06/06/2012 09:50:14
#403632
Não olhei muito à fundo, mas me parece que você está querendo gravar em uma tabela, os cupons que você encontrar em uma outra, correto?
Bem, não sei se o Firebird permite esse tipo de sintaxe, mas poderia fazer algo como:
Insert Into ECFCupom (ID, ECF_CX, COD_SIT, NUIM_COD, DT_DOC, VL_DOC,CPFCNPJ,NOMADQ) Select (I.ID,I.DATAREG,I.NUMEROCUPOM,I.CODCLI,I.NUMEROECF,I.CODIGO,V.TOTAL,C.CNPJCPF,C.RAZAOSOCIAL FROM TBITENSVENDA AS I INNER JOIN ECF_TOTAL AS V ON (I.NUMEROCUPOM=V.NUMEROCUPOM) INNER JOIN TBCLIENTES AS C ON (I.CODCLI=C.CODCLIENTE) WHERE I.DATAREG=[ô][Ô] & CDate(DT).ToString([Ô]MM/dd/yyyy[Ô]) & [Ô][ô][Ô]
Tópico encerrado , respostas não são mais permitidas