Sql Server tips

Alcune annotazioni:

1. Ipotizziamo che sia presente un indice sulla colonna Col1. Non eseguire:

SELECT Col2, Col3 FROM table WHERE Col1 + 30 = 130;

ma

SELECT Col2, Col3 FROM table WHERE Col1 = 130 - 30;

In questo modo si utilizza l'indice e si evita uno inutile scan completo della tabella.

2. SELECT 'IN' WHERE 'A' NOT IN ('B', NULL);

Non torna risultati perchè il valore Null non è definito e potrebbe essere 'A'

3. Oltre alle classiche wildcards più conosciute (% e _ ) esistono anche:

[ ] : 'a' like '[a-g]'

[^ ] : 'a'like '[^a-g]'

4. E' GOOD PRACTICE usare AS per gli aliases! Guardate cosa succede saltando una virgola:

SELECT Name 'abc', ActiveDate + 365 as OneYearSalesDate From Product

Meglio:

SELECT Name as Product, 'abc', ActiveDate + 365 as OneYearSalesDate From Product

5. Attenzione a Select *  !!!

6. La colonna composta che compare in ORDER BY non crea overhead se già usata nella SELECT

7. Quando scriviamo SELECT si intende SELECT ALL in contrapposizione a SELECT DISTINCT (tendiamo a dimenticarcene).

8. Attenzione a SELECT TOP che restituisce sempre il TOP indicato. In caso siano presenti più elementi pari merito nell'ultima posizione del top, viene incluso solo il primo. Per includere gli altri occorre aggiungere SELECT TOP (3) WITH TIES. Access lo fa di default!

9. Abituarsi a usare TOP con le parentesi: si tratta di una novità. Inoltre è permesso da Sql Server 2005 anche usare le variabili.

10. Si inizia a usare il ; anche in Sql per concludere le istruzioni. E' obbligatorio dopo un MERGE e prima di una common table expression (CTE). Non si usa tra END TRY e BEGIN CATCH, tra IF e BEGIN e con GO.


Technorati tags:

Print | posted @ domenica 18 dicembre 2011 19:12

Comments on this entry:

Gravatar # re: Sql Server tips
by Davide Mauri at 18/12/2011 21:15

Riguardo al punto 10, aggiungo che da SQL Server 2012 l'omissione del ; è DEPRECATO...quindi prima ci si abitua ad usarlo sempre, meglio è :)
Comments have been closed on this topic.