Joomla.it Forum
Non solo Joomla... => Sviluppo => : mau_develop 25 Apr 2013, 19:29:44
-
Ho bisogno di fare una query select su un campo contenente un valore serializzato (JRegistry) per estrarre (filtrare) dove un elemento di quel registro = X
come posso fare senza uccidere il database?
-
serializzi il dato e lo riccerchi con un like, ma da una rapida ricerca non sembra ci siano dei metodi standard
-
mmhh vero,... nel db è già ovviamente una stringa serializzata potrei appunto estrarla solo che invece che fare un like potrei fare una regex e deserializzarlo solo se il tal valore è presente.
Il problema è che sono circa 70.000 record e non c'è altra soluzione che usare la serializzazione per salvare quei dati, non possono occupare campi.
La tabella non ha un indice unico, o meglio ce l'ha ma non è gestito dal db ma dagli script... un po come se fosse:
nome->simone
azioni-> serializzazione (array(2013-4-26->si, giallo->ok, pioggia->no), array(2013-4-30->si, giallo->no, pioggia->si )
ora se devo cercare tutti i giorni in cui simone ha preso la pioggia diventa un guaio capisci?... più che altro non per riuscirci ma per farlo con operazioni meno onerose possibile per il db
-
non penso ci sia una soluzione performante per cio che vuoi fare, select e where su testo libero, l'uniuca cosa che mi viene in mente e demandare tali controlli al php utilizzando la cache dove ritrsformi questi valori serializzati in campi, ma non penso sia ottimale. Questa è una questione per super esperti di database