[Emozioni] Non a tutti gli informatici succede ...

Caro diario,
voglio raccontarti una cosa che mi è successa ieri al lavoro. Avevo da fare una query su una tabella di un database (SQL Server 2005) un pò particolare. La particolarità non è per la query che è una cavolata, ma per la mole di filtri da inserire. In pratica da una tabella da tanti XMila record dovevo filtrarne YMila facendo una WHERE secca su un campo e su un altro campo dovevo escludere quelli presenti in un elenco (11700 per l'esattezza) e così mi sono messo a preparare la query in excel sfruttando le macro. La prima versione era del tipo:
SELECT * FROM Tabella WHERE Campo1 = Valore1 AND Campo2 NOT IN ( 'Val1', [...] , 'Val11700') ORDER BY NomeCampo

La situazione non era delle più snelle, così ho coinvolto LadyChobin per vedere se assieme si trovava una query più snella. Il mio neurone ha avuto una bellissima idea ed ha cambiato la macro per ottenere la seguente query:
SELECT * FROM Tabella WHERE Campo1 = Valore1 AND (Campo2 <> 'Val1' AND [...] AND Campo2 <> 'Val11700') ORDER BY NomeCampo

Ero ottimista e l'ho lanciata con qua la LadyChobin. Abbiamo visto, per la prima volta entrambe, il seguente errore:
Msg 8631, Level 17, State 1, Line 1
Internal error: Server stack limit has been reached. Please look for potentially deep nesting in your query, and try to simplify it.

Mi ha fatto i complimenti, a lei non era mai successo di fare una query di dimensioni elevate che producesse questo errore. Così siamo tornati alla NOT IN ed abbiamo atteso il risultato.

Quando ha finito, l'ho chiamata e le ho detto "19" e mi ha chiesto se avesse finito. Le ho risposto si ... ci mancava solo che avesse altro da fare dopo tutto quel tempo! Ad esser sinceri ci ha messo esattamente 18 minuti e 42 secondi per estrarre 3961 records.

Dai, LadyChobin ammettilo che ti rode che quell'errore l'ho avuto io e non te ... ihihihih ...

Ahhh ... che bello essere informatici ... vediamo cose che voi umani nemmeno si immaginano :P

Etichette: , , , , , , , , , ,