quarta-feira, 23 de julho de 2014

SQL: Funções determinísticas e não-determinísticas

As funções internas do SQL Server podem ser classificadas em um grupo distinto, a partir do resultado que elas nos retornam. De acordo com a variação do retorno, podemos chama-las de determinísticas e não-determinísticas.

Para entender o conceito é bem simples:
  • §  Funções determinísticas – seu resultado não varia, sendo passado um mesmo conjunto de valores de entrada e um mesmo estado de banco de dados;
  • §  Funções não-determinísticas – podem retornar valores diferentes para um conjunto de dados, mesmo sem que o banco de dados tenha seu estado alterado.
É bem fácil compreender este conceito, vamos ver um exemplo, quando executamos uma função AVG(), estando o banco de dados inalterado, ela sempre resultara no mesmo valor. Se compararmos com o resultado de uma função GetDate() por exemplo, mesmo quando temos o banco estável, esta função nos retornara um valor a cada vez que for executada.

Não é possível alterar o estado das funções internas do SQL Server, ela permanecerá determinística sou não de acordo com o que for implementado pelo mecanismo de banco de dados, e você não tem controle sobre isso.

Esta propriedade das funções pode afetar a criação de alguns recursos do SQL Server. Por exemplo, você não pode criar índices clusterizados que utilizam massas de dados com funções não determinísticas, como no caso de uma View Indexada ou uma coluna calculada armazenada.

Abaixo, segue uma tabela com algumas funções internas determinísticas:

ABS
DATEDIFF
POWER
ACOS
DAY
RADIANS
ASIN
DEGREES
ROUND
ATAN
EXP
SIGN
ATN2
FLOOR
SIN
CEILING
ISNULL
SQUARE
COALESCE
ISNUMERIC
SQRT
COS
LOG
TAN
COT
LOG10
YEAR
DATALENGTH
MONTH
DATEADD
NULLIF



Além destas, podemos considerar todas as funções internas que executam cadeias de caracteres (strings).

;) até a próxima.


Nenhum comentário:

Tags

Microsoft (82) Google (33) Windows (23) Internet (20) Windows 7 (15) Internet Explorer (13) Segurança (12) Games (11) Gmail (5) Jogos (5) Mobile (5) Mozila Firefox (5) Visual Studio 2010 (5) Banco de Dados (4) Kinect (4) Orkut (4) Video Game (4) Videos (4) 3D (3) Chrome Os (3) Twitter (3) Web Designer (3) YouTube (3) Acessibilidade (2) Adobe (2) Analise (2) Artigos (2) Asp.Net (2) HTML5 (2) Internet Explorer 9 (2) Live Messenger (2) SqlServer (2) Steve Jobs (2) Sun (2) Telefonia (2) Wifi (2) Yahoo (2) blizzard (2) .Net (1) 3G (1) 4G (1) App Store (1) CEO (1) Cinema (1) Firefox (1) IBM (1) Java (1) Mozilla (1) Música (1) Nuvem (1) PS3 (1) PSN (1) Steve Ballmer (1) Televisor (1) Visual Studio 11 (1) Web 2.0 (1) eBook (1) w3c (1)