Buonasera a tutti,
pongo alla vostra gentile attenzione il mio quesito.
il mio sito web contiene una form che esegue una ricerca (circa 600 volte al giorno) su una tabella di nome PIPPO, contenente 3mila record e strutturata come segue:
codice:
Obj_id | value_id | BoolSet
1 | 2 | 1
1 | 42 | 1
1 | 25 | 1
1 | 45 | 1
2 | 2 | 1
2 | 45 | 0
3 | 2 | 1
3 | 42 | 1
3 | 25 | 1
3 | 45 | 1
4 | 2 | 0
4 | 42 | 0
4 | 25 | 1
4 | 45 | 1
5 | 45 | 1
6 | 2 | 1
Tramite la seguente query:
codice:
SELECT * FROM (SELECT A.`Obj_id ` AS ID1_OBJ FROM PIPPO AS A, PIPPO AS B, PIPPO AS C, PIPPO AS D
WHERE 1=1
AND A.` Obj_id ` =B.`Obj_id `
AND B.`Obj_id ` =C.`Obj_id `
AND C.`Obj_id ` =D.`Obj_id `
AND A.`value_id`=2 AND A.` BoolSet `=1
AND B.`value_id`=42 AND B.` BoolSet `=1
AND C.`value_id`=25 AND C.`valore`=1
AND D.`value_id`=45 AND D.` BoolSet `=1
)
Ottengo:
la lista di valori della colonna Obj_id che hanno la colonna value_id=2 and 42 and 25 and 45 and colonna BoolSet =1
In questo caso Il risultato sarà: (1,3)
La colonna value_id potrebbe assumere fino a 10 diversi valori, in tal caso se volessi ottenere:
la lista di valori della colonna Obj_id che hanno la colonna value_id=2 and 42 and 25 and ..(fino a 10) and colonna BoolSet =1
la mia query dovrebbe essere sviluppata con 10 prodotti cartesiani della stessa tabella.
Quello che chiedo è, la mia query:
- è performante ?
- esiste un modo migliore/più sintetico di svilupparla?
Grazie a tutti