Posts

Showing posts from August, 2019

SET IDENTITY_INSERT, a cosa serve?

Image
Ciao a tutti, ..e ben ritrovati. Mi fa piacere che questi post, a volte brevi, a volte piĆ¹ lunghi siano apprezzati! Per questo vi dico un grazie di Cuore. Quello che cerco di fare ĆØ di essere sempre il piĆ¹ chiaro possibile. Quindi qual'ora non lo fossi ditemelo pure.. consigli e critiche costruttive sono sempre un regalo. Buona lettura! Oggi breve articolo sul comando T-SQL SET IDENTITY_INSERT <NOMETABELLA> ON/OFF   Il comando SET IDENTITY_INSERT Diciamo subito a che cosa serve. Supponiamo di avere una tabella <NOMETABELLA> in cui ĆØ definito un campo di tipo identitĆ  come ad esempio il campo ID nell'esempio sotto:   CREATE TABLE ELENCOTELEFONICO (ID INT IDENTITY (1,1), CODICE VARCHAR(40) ) Per inserire i dati nella tabella non andrĆ² a specificare un valore per campo ID. Tale valore sarĆ  infatti generato in automatico: INSERT INTO <NOMETABELLA> (CODICE) VALUES ( 'AAA' ) Tramite il comando SET IDENTITY INSER

Trigger e la funzione UPDATE()

Image
Ciao a tutti!   Oggi parliamo di trigger e piĆ¹ nello specifico della funzione UPDATE() e piĆ¹ in generale di come ottimizzare questi automatismi che SQL Server mette a disposizione. Partiamo dalla funzione UPDATE () per parlare delle metatabelle INSERTED e DELETED . Buona lettura!   La funzione UPDATE()   GiĆ , ma che cos’ĆØ la funzione UPDATE()? La funzione UPDATE(NOMECOLONNA) , che si utilizza dentro ad un trigger restituisce l’informazione relativa al fatto che il valore della campo NOMECOLONNA abbia cambiato o meno valore. Vediamo un esempio creandoci due semplici tabelle uguali tra di loro CREATE table TABELLA_A (id int identity (1,1), CODICE VarChar (40), DESCR VarChar (40)) CREATE table TABELLA_B (id int identity (1,1), CODICE VarChar (40), DESCR VarChar (40)) Adesso creiamo un trigger in update sulla tabella_A per ottenere questo comportamento: Se cambia il codice nella tabelle_A allora cambierĆ  il codice nella tabella_B CREATE TRIGGER [dbo].[TR

Di sottoquery ed ottimizzazioni (parte 2)

Image
Ciao a tutti, Siete pronti per la seconda parte? Nell'articolo di ieri (clikka qui: Di sottoquery ed ottimizzazioni (parte 1)   ) avevamo parlato di Sottoquery. Abbiamo visto cosa comportano e che per quanto possibile ĆØ bene evitarle . GiĆ , ma come fare? Lo vediamo adesso!  P.S. Buona lettura!   Di sottoquery ed ottimizzazioni parte 2 Partiamo innanzitutto dalla stringa SQL che avevamo analizzato: SELECT Tes.ID, Tes.DataOrdine, ( SELECT MAX(Det.Prezzo) FROM Dettaglio AS Det WHERE Tes.Id = Det.Idtestata) AS MaxPrezzo, ( SELECT MAX(Det.Prezzo2) FROM Dettaglio AS Det WHERE Tes.Id = Det.Idtestata) AS MaxPrezzo2, ( SELECT MAX(Det.Prezzo3) FROM Dettaglio AS Det WHERE Tes.Id = Det.Idtestata) AS MaxPrezzo3, ( SELECT MAX(Det.Prezzo4) FROM Dettaglio AS Det WHERE Tes.Id = Det.Idtestata) AS MaxPrezzo4 FROM Testata AS Tes Abbiamo capito, dal piano di esecuzione effettivo che la lettura della tabella Dettaglio viene eseguita 4 volte. Abbiamo anche vi

Di sottoquery ed ottimizzazioni (parte 1)

Image
Buongiorno a tutti, ben ritrovati. Grazie per le tante visite (ben 1200 in circa un mese e mezzo sono tante per un technical-blog appena nato), mi raccomando continuate cosƬ! Grazie ancor di piĆ¹ per gli apprezzamenti che fanno sempre molto piacere. Ho cercato di rendere il blog piĆ¹ leggibile, ho aggiunto i post piĆ¹ popolari e infine ho inserito anche la possibilitĆ  di ricevere una notifica via mail alla pubblicazione un nuovo articolo. Se la trovate una buona idea allora iscrivetevi e riceverete i nuovi articoli appena sfornati ...ancora caldi! Lasciate le ferie alle spalle partiamo oggi parlando di "uno degli argomenti core" di questo blog ovvero la scrittura ottimale e performante delle Query. Lo vorrei fare assieme a voi analizzando come vengono gestite in SQL Server le sottoquery (subquery in inglese).   Le SottoQuery Partiamo da un esempio. Tante volte osserviamo delle interrogazioni che hanno al loro interno altre Query. PuĆ² avvenire sia nella select che

Le Common Table Expression (CTE) che cosa sono?

Image
Buongiorno a tutti! Ben ritrovati! Oggi parliamo di Common Table Expression a cui molto piĆ¹ spesso ci si riferisce con l'acronimo CTE . Cosa sono? CercherĆ² di spiegarlo nel modo piĆ¹ semplice possibile! Pronti? Via!   Le Common Table Expression Quando mi fanno questa domanda rispondo utilizzando il modo piĆ¹ semplice in cui riesco a definirle: Una CTE ĆØ un Result set temporaneo a cui associamo un nome ed al quale possiamo riferirci nei vari statements. Le CTE sono state introdotte ormai un po' di anni fa con il rilascio della versione 2005 di SQL Server ma s e non sapete quale versione ĆØ installata potete vedere qui: identificare la versione di sql server installata L'obbiettivo era quello di prevedere una sintassi estesa che permettesse di scrivere le Query in modo piĆ¹ agevole. Il loro utilizzo potrebbe inoltre portare ad un incremento delle prestazioni ma questo aspetto lo vedremo in futuro. La sintassi base per l'utilizzo delle CTE ĆØ davvero semplice