Usuário com melhor resposta
select ou set

Pergunta
-
Pessoal
Na questão de performance e melhor desempenho, qual dos comandos abaixo seria o mais recomendado ?
1) set @ic_Status_Registro = '02' -- Erro set @id_Formulario_Sistema = dbo.fn_Return_id_Formulario_Sistema(@nm_Formulario) 2) select @ic_Status_Registro = '02' -- Erro select @id_Formulario_Sistema = dbo.fn_Return_id_Formulario_Sistema(@nm_Formulario)
Respostas
-
Nei,
Depende, o conceito correto é utilizar o SET, mas se você necessita atualizar o valor de várias variáveis isto só é possível utilizando o SELECT.
Veja abaixo:
-- UTILIZANDO SET SET @ic_Status_Registro = '02' -- Erro SET @id_Formulario_Sistema = dbo.fn_Return_id_Formulario_Sistema(@nm_Formulario) --UTILIZANDO SELECT SELECT @ic_Status_Registro = '02', @id_Formulario_Sistema = dbo.fn_Return_id_Formulario_Sistema(@nm_Formulario)
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Alexandre Matayosi terça-feira, 25 de fevereiro de 2014 12:59
- Marcado como Resposta Durval RamosModerator quinta-feira, 8 de maio de 2014 19:48
-
Alexandre
No caso de atualizar várias variaveis, mesmo assim você utiliza o select, este foi um ponto que me gerou muito dúvida, na questão de ter vários set, e ter apenas um select, o que você acha em relação da sua experiência ?
Nei,
Isto envolve apenas a quantidade de bytes que vão trafegar para executar o comando. E simplesmente, isto pode fazer diferença na performance de acordo com a quantidade de variáveis que você vai manipular.
Vou exibir abaixo uma demonstração com apenas 3 variáveis. De um lado, às variáveis são carregadas pelo "SET" e na consulta ao lado, às mesmas variáveis são carregadas por um "SELECT".
Você vai ver que já existe uma alteração nos bytes trafegados e consequentemente, afetando a performance (imperceptível em pequenas quantidades).
Como eu disse anteriormente, apenas uma quantidade grande de variáveis vai influenciar o desempenho da sua procedure / script, mas é bom saber diferenciar o que é o padrão SQL-92 (SET) e o que pode ser mais performático (SELECT).
Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Durval RamosModerator quinta-feira, 8 de maio de 2014 19:48
-
NeiBala, como o Durval disse, só vai fazer uma grande diferença se voce tiver um numero muito grande de variaveis na mesma execução, o que é muito raro de acontecer, vai de voce e do padrão que a empresa utiliza para os codigos, basicamente em processos normais por questões de padrão, sempre utilizo somente o set para atribuir valor e select para exibições.
Alexandre Matayosi Conde Mauricio.
- Marcado como Resposta Durval RamosModerator quinta-feira, 8 de maio de 2014 19:48
Todas as Respostas
-
Nei,
Depende, o conceito correto é utilizar o SET, mas se você necessita atualizar o valor de várias variáveis isto só é possível utilizando o SELECT.
Veja abaixo:
-- UTILIZANDO SET SET @ic_Status_Registro = '02' -- Erro SET @id_Formulario_Sistema = dbo.fn_Return_id_Formulario_Sistema(@nm_Formulario) --UTILIZANDO SELECT SELECT @ic_Status_Registro = '02', @id_Formulario_Sistema = dbo.fn_Return_id_Formulario_Sistema(@nm_Formulario)
Se ajudou na sua solução, não esqueça de marcar como resposta !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Sugerido como Resposta Alexandre Matayosi terça-feira, 25 de fevereiro de 2014 12:59
- Marcado como Resposta Durval RamosModerator quinta-feira, 8 de maio de 2014 19:48
-
Nei, somente complementando a resposta do colega, em termos de performance acredito que não vai ter diferença nenhuma, voce pode fazer os testes para verificar e ver tambem o plano de execução de ambas opções, eu por costume utilizo sempre o set para atribuir valor a variavel e select para exibir.
Alexandre Matayosi Conde Mauricio.
-
-
Alexandre
No caso de atualizar várias variaveis, mesmo assim você utiliza o select, este foi um ponto que me gerou muito dúvida, na questão de ter vários set, e ter apenas um select, o que você acha em relação da sua experiência ?
Nei,
Isto envolve apenas a quantidade de bytes que vão trafegar para executar o comando. E simplesmente, isto pode fazer diferença na performance de acordo com a quantidade de variáveis que você vai manipular.
Vou exibir abaixo uma demonstração com apenas 3 variáveis. De um lado, às variáveis são carregadas pelo "SET" e na consulta ao lado, às mesmas variáveis são carregadas por um "SELECT".
Você vai ver que já existe uma alteração nos bytes trafegados e consequentemente, afetando a performance (imperceptível em pequenas quantidades).
Como eu disse anteriormente, apenas uma quantidade grande de variáveis vai influenciar o desempenho da sua procedure / script, mas é bom saber diferenciar o que é o padrão SQL-92 (SET) e o que pode ser mais performático (SELECT).
Não esqueça de marcar como resposta todos os posts que ajudaram na sua solução !
Abraços,
Durval RamosMicrosoft Partner | MTA - SQL Server 2012---------------------------------- Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"- Marcado como Resposta Durval RamosModerator quinta-feira, 8 de maio de 2014 19:48
-
NeiBala, como o Durval disse, só vai fazer uma grande diferença se voce tiver um numero muito grande de variaveis na mesma execução, o que é muito raro de acontecer, vai de voce e do padrão que a empresa utiliza para os codigos, basicamente em processos normais por questões de padrão, sempre utilizo somente o set para atribuir valor e select para exibições.
Alexandre Matayosi Conde Mauricio.
- Marcado como Resposta Durval RamosModerator quinta-feira, 8 de maio de 2014 19:48