ciao a tutti
il mio database è composto da 3 tabelle unite tra loro attraverso una colonna indice che è uguale per tutte. Le tabelle sono 3 perchè sql ha il limite di 8060 caratteri per riga di tabella e per me non era sufficiente.
I campi delle tabelle sono circa 200 e i record inseriti sono circa 20.000.
Da quando ho diviso il database in 3 tabelle per superare il limite dei 8060 caratteri però le prestazioni sono NOTEVOLMENTE peggiorate; addirittura il risultato di una query non mi viene mai visualizzato per timout expired.
la query è la seguente: (non mettetevi a ridere è l'unica cosa che mi sono riuscito ad inventare)
SELECT *
FROM dbo.supervisore
WHERE (nomeazienda LIKE '%razienda%') and (esito LIKE '%resito%') and (datatelefonata > 'rdata') and (note LIKE '%rnote%') and (categorie LIKE '%rcategoria%') and ((data1 > 'rdataagente' and data2 is null) or (data2 > 'rdataagente' and data3 is null) or (data3 > 'rdataagente' and data4 is null) or (data4 > 'rdataagente' and data5 is null) or (data5 > 'rdataagente' and data6 is null) or (data6 > 'rdataagente' and data7 is null) or (data7 > 'rdataagente' and data8 is null) or (data8 > 'rdataagente' and data9 is null) or (data9 > 'rdataagente' and data10 is null) or (data10 > 'rdataagente' and data11 is null) or (data11 > 'rdataagente' and data12 is null) or (data12 > 'rdataagente' and data13 is null) or (data13 > 'rdataagente' and data14 is null) or (data14 > 'rdataagente' and data15 is null) or (data16 > 'rdataagente' and data17 is null) or (data17 > 'rdataagente' and data18 is null) or (data18 > 'rdataagente' and data19 is null) or (data19 > 'rdataagente' and data20 is null) or (data20 > 'rdataagente')) and ((esito1 LIKE '%resitoagente%' and esito2 = 'N / A') or (esito2 LIKE '%resitoagente%' and esito3 = 'N / A') or (esito3 LIKE '%resitoagente%' and esito4 = 'N / A') or (esito4 LIKE '%resitoagente%' and esito5 = 'N / A') or (esito5 LIKE '%resitoagente%' and esito6 = 'N / A') or (esito6 LIKE '%resitoagente%' and esito7 = 'N / A') or (esito7 LIKE '%resitoagente%' and esito8 = 'N / A') or (esito8 LIKE '%resitoagente%' and esito9 = 'N / A') or (esito9 LIKE '%resitoagente%' and esito10 = 'N / A') or (esito10 LIKE '%resitoagente%' and esito11 = 'N / A') or (esito11 LIKE '%resitoagente%' and esito12 = 'N / A') or (esito12 LIKE '%resitoagente%' and esito13 = 'N / A') or (esito13 LIKE '%resitoagente%' and esito14 = 'N / A') or (esito14 LIKE '%resitoagente%' and esito15 = 'N / A') or (esito16 LIKE '%resitoagente%' and esito17 = 'N / A') or (esito17 LIKE '%resitoagente%' and esito18 = 'N / A') or (esito18 LIKE '%resitoagente%' and esito19 = 'N / A') or (esito19 LIKE '%resitoagente%' and esito20 = 'N / A') or (esito20 LIKE '%resitoagente%')) and (note1 LIKE '%rnoteagente%' or note2 LIKE '%rnoteagente%' or note3 LIKE '%rnoteagente%' or note4 LIKE '%rnoteagente%' or note5 LIKE '%rnoteagente%' or note6 LIKE '%rnoteagente%' or note7 LIKE '%rnoteagente%' or note8 LIKE '%rnoteagente%' or note9 LIKE '%rnoteagente%' or note10 LIKE '%rnoteagente%' or note11 LIKE '%rnoteagente%' or note12 LIKE '%rnoteagente%' or note13 LIKE '%rnoteagente%' or note14 LIKE '%rnoteagente%' or note16 LIKE '%rnoteagente%' or note17 LIKE '%rnoteagente%' or note18 LIKE '%rnoteagente%' or note19 LIKE '%rnoteagente%' or note20 LIKE '%rnoteagente%')
ORDER BY nomeazienda ASC
allora: razienda, resito, rdata ecc ecc sono url parameter che immetto da una maschera in asp.
la ricerca non mi da problemi se sfrutto molti parametri di ricerca tra quelli disponibili, però se ad esempio immetto solo rdataagente o resitoagente mi da timeout expired dopo 20 sec di elaborazione che tralaltro blocca praticamente il server (IBM netfinity 5000).
come faccio a incrementare le prestazioni costruendo una query in modo umano?
grazie a tutti e ciao

)
Rispondi quotando