![ActiveDelphi - Índice do Fórum](templates/subSilver/images/logo_phpBB.gif) |
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
adriano_servitec Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Jul 19, 2011 8:43 am Assunto: Aumento de performance no select? **Concluído** |
|
|
Tenho um select assim
Código: | SELECT
VIR.ID_PAGAMENTO_TITULAR,
VI.NOME_TITULAR,
VI.APELIDO_TITULAR,
SUM(VIR.valor_rateio_titular) AS RATEIO_TITULAR
FROM
VENDAS_ITENS_RATEIO VIR
INNER JOIN VENDAS_ITENS VI ON (VIR.CODIGO = VI.CODIGO
AND VIR.CODIGO_ITEM = VI.CODIGO_ITEM )
AND VIR.ID_PAGAMENTO_TITULAR =
(SELECT distinct(processamento_rateio_itens.CODIGO)
FROM processamento_rateio_itens
where processamento_rateio_itens.codigo = :codigoini
and CAST(processamento_rateio_itens.data_processamento AS DATE) BETWEEN :inicio AND :final
)
AND VIR.VALOR_RATEIO_TITULAR > 0
GROUP BY 1,2,3 |
Ao executalo tenho uma perfirmance assim
Citação:
Citação: | ------ Performance info ------
Prepare time = 63ms
Execute time = 203ms |
Porém preciso executar com mais de um CODIGO e coloquei um IN no lugar do = e pronto, nem vai mais
Código: | SELECT
VIR.ID_PAGAMENTO_TITULAR,
VI.NOME_TITULAR,
VI.APELIDO_TITULAR,
SUM(VIR.valor_rateio_titular) AS RATEIO_TITULAR
FROM
VENDAS_ITENS_RATEIO VIR
INNER JOIN VENDAS_ITENS VI ON (VIR.CODIGO = VI.CODIGO
AND VIR.CODIGO_ITEM = VI.CODIGO_ITEM )
AND VIR.ID_PAGAMENTO_TITULAR IN
(SELECT distinct(processamento_rateio_itens.CODIGO)
FROM processamento_rateio_itens
where processamento_rateio_itens.codigo IN :codigoini
and CAST(processamento_rateio_itens.data_processamento AS DATE) BETWEEN :inicio AND :final
)
AND VIR.VALOR_RATEIO_TITULAR > 0
GROUP BY 1,2,3 |
Apenas passando os parametros
Citação: | codigo: 67
dataini 01/0/2008
datafin 15/07/2008 |
Não vai nem a pau com IN.
Usando firebird 1.5 _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree
Editado pela última vez por adriano_servitec em Ter Jul 19, 2011 2:31 pm, num total de 1 vez |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
BrunoMoreyra Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Quinta-Feira, 26 de Novembro de 2009 Mensagens: 1398 Localização: Goiânia - GO / Brasília - DF
|
Enviada: Ter Jul 19, 2011 9:19 am Assunto: Re: Aumento de performance no select? |
|
|
Bom dia,
está ocasionando algum problema?
a citação ficou errada a data inicial.
adriano_servitec escreveu: | Tenho um select assim
Código: | SELECT
VIR.ID_PAGAMENTO_TITULAR,
VI.NOME_TITULAR,
VI.APELIDO_TITULAR,
SUM(VIR.valor_rateio_titular) AS RATEIO_TITULAR
FROM
VENDAS_ITENS_RATEIO VIR
INNER JOIN VENDAS_ITENS VI ON (VIR.CODIGO = VI.CODIGO
AND VIR.CODIGO_ITEM = VI.CODIGO_ITEM )
AND VIR.ID_PAGAMENTO_TITULAR =
(SELECT distinct(processamento_rateio_itens.CODIGO)
FROM processamento_rateio_itens
where processamento_rateio_itens.codigo = :codigoini
and CAST(processamento_rateio_itens.data_processamento AS DATE) BETWEEN :inicio AND :final
)
AND VIR.VALOR_RATEIO_TITULAR > 0
GROUP BY 1,2,3 |
Ao executalo tenho uma perfirmance assim
Citação:
Citação: | ------ Performance info ------
Prepare time = 63ms
Execute time = 203ms |
Porém preciso executar com mais de um CODIGO e coloquei um IN no lugar do = e pronto, nem vai mais
Código: | SELECT
VIR.ID_PAGAMENTO_TITULAR,
VI.NOME_TITULAR,
VI.APELIDO_TITULAR,
SUM(VIR.valor_rateio_titular) AS RATEIO_TITULAR
FROM
VENDAS_ITENS_RATEIO VIR
INNER JOIN VENDAS_ITENS VI ON (VIR.CODIGO = VI.CODIGO
AND VIR.CODIGO_ITEM = VI.CODIGO_ITEM )
AND VIR.ID_PAGAMENTO_TITULAR IN
(SELECT distinct(processamento_rateio_itens.CODIGO)
FROM processamento_rateio_itens
where processamento_rateio_itens.codigo IN :codigoini
and CAST(processamento_rateio_itens.data_processamento AS DATE) BETWEEN :inicio AND :final
)
AND VIR.VALOR_RATEIO_TITULAR > 0
GROUP BY 1,2,3 |
Apenas passando os parametros
Citação: | codigo: 67
dataini 01/0/2008
datafin 15/07/2008 |
Não vai nem a pau com IN.
Usando firebird 1.5 |
_________________ Atencisamente,
Bruno Moreira Batista.
http://www.kawek.com.br/BrunoBatista
Skype: Bruno_Batysta |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
adriano_servitec Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Jul 19, 2011 9:28 am Assunto: |
|
|
Olá, bom dia, então pra ser mais preciso esta select deve trazer dados de um view que ja usamos para outras ocasiões, e agora pediram para não incluir o codigo, apenas as datas Inicial e final
Ficou assim o modo que fiz
Código: | SELECT VIW.ID_PAGAMENTO_TITULAR,
VIW.NOME_TITULAR,
VIW.APELIDO_TITULAR,
SUM(VIW.valor_rateio_titular) AS RATEIO_TITULAR
FROM VIEW_VENDAS_ITENS_RATEIO VIW
INNER JOIN processamento_rateio_itens PRI ON (VIW.ID_PAGAMENTO_TITULAR IN
(SELECT distinct(processamento_rateio_itens.CODIGO)
FROM processamento_rateio_itens
where CAST(processamento_rateio_itens.data_processamento AS DATE) BETWEEN :inicio AND :final
))
WHERE VIW.VALOR_RATEIO_TITULAR > 0
AND VIW.TIPO IS NULL
AND VIW.ITEM_CANCELADO = 'Não'
GROUP BY 1,2,3 |
Mais assim desta forma trava. _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
BrunoMoreyra Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Quinta-Feira, 26 de Novembro de 2009 Mensagens: 1398 Localização: Goiânia - GO / Brasília - DF
|
Enviada: Ter Jul 19, 2011 9:58 am Assunto: |
|
|
Bom dia,
tente da seguinte forma:
Código: |
SELECT VIW.ID_PAGAMENTO_TITULAR,
VIW.NOME_TITULAR,
VIW.APELIDO_TITULAR,
SUM(VIW.valor_rateio_titular) AS RATEIO_TITULAR
FROM VIEW_VENDAS_ITENS_RATEIO VIW
WHERE VIW.VALOR_RATEIO_TITULAR > 0
AND VIW.TIPO IS NULL
AND VIW.ITEM_CANCELADO = 'Não'
AND VIW.ID_PAGAMENTO_TITULAR IN (SELECT distinct(PRI.CODIGO)
FROM processamento_rateio_itens PRI
where CAST(PRI.data_processamento AS DATE) BETWEEN :inicio AND :final)
GROUP BY 1,2,3
|
adriano_servitec escreveu: | Olá, bom dia, então pra ser mais preciso esta select deve trazer dados de um view que ja usamos para outras ocasiões, e agora pediram para não incluir o codigo, apenas as datas Inicial e final
Ficou assim o modo que fiz
Código: | SELECT VIW.ID_PAGAMENTO_TITULAR,
VIW.NOME_TITULAR,
VIW.APELIDO_TITULAR,
SUM(VIW.valor_rateio_titular) AS RATEIO_TITULAR
FROM VIEW_VENDAS_ITENS_RATEIO VIW
INNER JOIN processamento_rateio_itens PRI ON (VIW.ID_PAGAMENTO_TITULAR IN
(SELECT distinct(processamento_rateio_itens.CODIGO)
FROM processamento_rateio_itens
where CAST(processamento_rateio_itens.data_processamento AS DATE) BETWEEN :inicio AND :final
))
WHERE VIW.VALOR_RATEIO_TITULAR > 0
AND VIW.TIPO IS NULL
AND VIW.ITEM_CANCELADO = 'Não'
GROUP BY 1,2,3 |
Mais assim desta forma trava. |
_________________ Atencisamente,
Bruno Moreira Batista.
http://www.kawek.com.br/BrunoBatista
Skype: Bruno_Batysta |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
adriano_servitec Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
Enviada: Ter Jul 19, 2011 10:04 am Assunto: |
|
|
BrunoMoreyra escreveu: | Bom dia,
tente da seguinte forma:
Código: |
SELECT VIW.ID_PAGAMENTO_TITULAR,
VIW.NOME_TITULAR,
VIW.APELIDO_TITULAR,
SUM(VIW.valor_rateio_titular) AS RATEIO_TITULAR
FROM VIEW_VENDAS_ITENS_RATEIO VIW
WHERE VIW.VALOR_RATEIO_TITULAR > 0
AND VIW.TIPO IS NULL
AND VIW.ITEM_CANCELADO = 'Não'
AND VIW.ID_PAGAMENTO_TITULAR IN (SELECT distinct(PRI.CODIGO)
FROM processamento_rateio_itens PRI
where CAST(PRI.data_processamento AS DATE) BETWEEN :inicio AND :final)
GROUP BY 1,2,3
|
adriano_servitec escreveu: | Olá, bom dia, então pra ser mais preciso esta select deve trazer dados de um view que ja usamos para outras ocasiões, e agora pediram para não incluir o codigo, apenas as datas Inicial e final
Ficou assim o modo que fiz
Código: | SELECT VIW.ID_PAGAMENTO_TITULAR,
VIW.NOME_TITULAR,
VIW.APELIDO_TITULAR,
SUM(VIW.valor_rateio_titular) AS RATEIO_TITULAR
FROM VIEW_VENDAS_ITENS_RATEIO VIW
INNER JOIN processamento_rateio_itens PRI ON (VIW.ID_PAGAMENTO_TITULAR IN
(SELECT distinct(processamento_rateio_itens.CODIGO)
FROM processamento_rateio_itens
where CAST(processamento_rateio_itens.data_processamento AS DATE) BETWEEN :inicio AND :final
))
WHERE VIW.VALOR_RATEIO_TITULAR > 0
AND VIW.TIPO IS NULL
AND VIW.ITEM_CANCELADO = 'Não'
GROUP BY 1,2,3 |
Mais assim desta forma trava. |
| Obrigado amigo, maisdeu na mesma coisa, vou mudar a view aqui, incluir esta tabela la também pra ver no que vai dar...
Depois volto a postar.
Valeu _________________ Jogo seu smartphone? Acesse o link e confira.
https://play.google.com/store/apps/details?id=br.com.couldsys.rockdrum
https://play.google.com/store/apps/details?id=br.com.couldsys.drumsetfree |
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
adriano_servitec Colaborador
![Colaborador Colaborador](../modules/PNphpBB2/templates/PNTheme/images/narodniki-classic/colaborador.gif)
Registrado: Sexta-Feira, 30 de Janeiro de 2004 Mensagens: 17618
|
|
Voltar ao Topo |
|
![](templates/subSilver/images/spacer.gif) |
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|