Costo computazionale - Curiosità

venerdì 24 luglio 2015 - 12.20

MorrisBuy Profilo | Newbie

Ciao Ragazzi,

ho un dubbio perchè non ho esperienza a riguardo.

Avrei una serie di stringhe le quali contengono una serie di CAP a volte misti anche PROVINCE.

Esempio:

$capProvince = "70010,70011,70012,LE,70015, BA,70013....."

Parliamo anche di stringhe lunghe 60 cap/prov...considerando che sono più stringhe parliamo in totale anche di 300 cap e forse più.

Dato che il dato potrebbe essere anche misto, attualmente faccio una query sul DB del tipo:

Select..FROM...Where Cap IN ('$capProvince') or Prov IN ('$capProvince') ....quindi andavo a controllare in entrambi i campi della tabella.


Mi chiedevo, in termini di complessità computazionale è meno costoso far fare al DB il lavoro sporco (come scritto poc'anzi) oppure fare un controllo in PHP, magari esplodendo la stringa $capProvince in un array, ciclarlo e controllare ad uno ad uno se è un CAP (se è a 5 cifre) o una PROVINCIA(se è a 2 cifre), poi separarli e far fare al DB solo il controllo nei giusti campi?!

Spero di essermi spiegato :)

Thanks!

alx_81 Profilo | Guru

>Ciao Ragazzi,
ciao

>Avrei una serie di stringhe le quali contengono una serie di CAP a volte misti anche PROVINCE.
questo database sta già violando la prima forma normale, quindi puoi ben capire che ogni query che tu possa inventarti non sarà mai performante quanto potrebbe esserlo nel caso in cui il database sia portato almeno in seconda forma normale.
Mettere dati di natura varia e raggruppati in una stringa mi pone a chiedere come mai è stato usato un database relazionale e non qualcosa di diverso.
Ragion per cui, a mio avviso, esiste un solo modo di risolvere la faccenda, sempre che tu voglia continuare ad usare un RDBMS, ovvero cercare, anche con un programma, di normalizzare la colonna trasformandola in più righe.
Almeno anche le query che andrai a fare saranno più affidabili e performanti.
Anche perchè non è detto che una LIKE possa tornare sempre quello che ti serve (soprattutto quando è mescolata con le province).

Alessandro Alpi | SQL Server MVP | Engage IT Services s.r.l.
MCP|MCITP|MCTS|MCT
http://blogs.dotnethell.it/suxstellino
http://suxstellino.wordpress.com
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5