Tilannekatsaus
Operaatio: Kottaraiseen puhtia
Tietokannasta hakua muutettiin siten, että nyt kaikki tiedot metatietoja lukuun ottamatta haetaan noin kymmenellä haulla. Kaikki questionresultit ja questionfieldit haetaan kahdella haulla. Myös questionit haetaan yhdellä haulla. Questionasgroupit haetaan kahdella haulla siten, että ensin haetaan kysymysten perusteella viitteet questionasgroupeihin ja sitten yhdellä haulla kaikki questionasgroupit. Tähän asti haku siis tapahtuu ”alhaalta ylös”, eli hierarkiassa alemmat oliot haetaan ensin ja niiden perusteella alikyselyjen avulla haetaan aina seuraava taso. Questiongroupit kuitenkin haetaan ainakin toistaiseksi kuten ennenkin, eli questionnairen tiedot haetaan ensin ja sitten haetaan sille kuuluvat questiongroupit. Jokainen questiongroup hakee sen jälkeen itsensä. Tämä tuottaa pari turhaa hakua, mutta se ei vaikuta kokonaisuuteen käytännössä mitenkään, joten sitä ei vielä muutettu. Näin päästiin hieman nopeammin näkemään, oliko hakurakenteen muuttamisesta mitään hyötyä. 
Testikyselynä oli Santasen arviointikysely (joka on sittemmin mennyt rikki). Vasemmalla on ajon järjestysnumero. Viimeisessä taulukossa on monta ykköstä, koska ne ovat kaikki kääntämisen jälkeen ensimmäisiä ajoja. Seuraavaksi taulukossa on tietokannasta hakevan metodin suoritusaika. Sen jälkeen on HTML-koodin generoivan metodin suoritusaika ja lopuksi Kotka.login kokonaisaika. 
Ensin vertailun vuoksi lähtötilanteen ajot:
Ajo	getValuesFromDb-metodin suoritusaika	getHtml-metodin suoritusaika	Kotka.login aika	
1	3380	2360	5780	
2	2290	3630	6140	
3	2330	2400	4900	
4	2380	2407	5000	
5	2270	2488	4840	
6	2350	2350	4910	
7	2410	2410	5020	
8	2340	2360	4900	
9	2300	2450	4940	
10	2310	2400	4910	

Seuraavat ajot on tehty uudella tavalla:
Ajo	getValuesFromDbQuickly-metodin suoritusaika	getHtml-metodin suoritusaika	Kotka.login aika	
1	2680	2480	5350	
2	1570	2470	4240	
3	1580	2500	4260	
4	1510	2410	4120	
5	1430	2470	4090	
6	1470	2480	4120	
7	1810	2450	4450	
8	2640	3460	6150	
9	1700	2440	4330	
10	1450	2440	4080	
Uusi rakenne kyselyn hakemiseksi siis nopeutti hieman hakua, mutta ei läheskään riittävästi. Tutkailimme hiukan eri palaset hakevien SQL-hakujen kestoa login avulla. 
Seuraavana pari ajoa:
Ajo	Result-qtime	Field-qtime	Question-qtime	Questionasgroup_question-qtime	
1	258	192	69	51	
2	200	199	69	52	
3	214	194	83	42	

Seuraavaksi kiinnostuimme siitä, miten ihmeessä HTML-koodin muodostava getHtml-metodi voi viedä niin paljon aikaa kuin mitä testit kertoivat. Tutkailimme rakennetta aikamme ja päädyimme tarkastelemaan villakoiran ydintä,  TemplateHandleria. Huomasimme sitä tutkiessamme, että se käy jokaisella kutsulla lukemassa template-tiedoston sisällön tiedostosta muistiinsa. Muutimme luokkaa siten, että nykyisellään se lukee yhdellä kertaa kaikki template-tiedostot HashMap-tietorakenteeseen. Lisäksi HashMap on kaikille yhteinen, joten tiedostosta lukeminen tehdään vain kerran kyselyä käsiteltäessä.

Muutoksen jälkeen HTML-koodin generoiminen alkoi sujumaan jo siedettävää vauhtia. Seuraavana pari testiajoa: 
Ajo	getValuesFromDbQuickly-metodin suoritusaika	getHtml-metodin suoritusaika	
1	2800	110	
1	2394	107	
1	1617	105	
1	1551	124	
2	1615	114	
3	1503	101	
4	1500	99	
5	1498	124	
6	1541	105	
7	1549	127	

Tällä hetkellä kyselyn hakeminen tietokannasta ja tulostaminen näyttöön vie siis pari-kolme sekuntia. Tästä tosin vielä puuttuvat erilaiset metatiedot ja pari määritystaulua, joihin tulevat esim. tekstialueiden koot ym. Niiden käsittelyä on vielä hiukan pähkittävä, koska samalla JSP-sivulla harvoin tarvitaan sekä metatietoja, että koko kyselyn näkymää. 
Kyselyn tallennuksen nopeutus on vielä edessä.
Muut edistysaskeleet
Muilta osin sovellus on edennyt siten, että vastausten selailu on nyt mahdollista. Lisäksi main-sivulle on tehty lista kyseisen käyttäjän tekemistä kyselyistä. Kyseisestä listasta voi valita mieleisensä kyselyn ja mennä selailemaan sen vastauksia yksi kerrallaan. 
Lisäksi handler-sivujen päivitysongelma on korjattu. Aikaisemmin ongelmana oli, etteivät sivut päivittyneet kun niille meni uudelleen, vaan tiedot pysyivät samana. 
Esikatselu on saatu valmiiksi ja lisätty kaikille luomisvaiheen sivuille.
Ensimmäinen versio tyylilomakkeesta on toteutettu.
WWW-osoitteiden syöttöominaisuus kysymyksille on toteutettu välilehtiominaisuuden avulla. Muuten välilehtien tekeminen on vielä aika paljon kesken.