Databaser, fortsättningskurs: Inlämningsuppgift 5 - Frågeoptimering

Mål

Uppgift

Titta på exeveringsplaner i Mimer och (om ni har tillgång till en sån) MySQL. Använd kommandot "SET EXPLAIN ON" i Mimer och "EXPLAIN" i MySQL. Läs i respektive manual om vad förklaringarna betyder. Experimentera med olika frågor, tabeller och index, och försök förstå hur databashanteraren optimerar frågorna. Tar den hänsyn till index? Antalet rader i tabellerna? Spelar det någon roll hur man formulerar frågorna?

Några exempeltabeller

Om man vill använda lite större tabeller i frågorna än vad man förmodligen orkar skapa själv, så finns några stora tabeller i schemat exempel i databasen dbk på Mimer-servern basen.oru.se Dessa tabeller skapades med kommandona i filen skapa-schemat.txt.

exempel.personer

id namn gatuadress postnummer postadress telefon
1 Alvar Juliussson Ingalillvägen 52B 39692 Slottsskogen 0688-250729
2 Jane Hakonsson Tovevägen 76 17264 Barsebäckshamn 0357-8596510
... ... ... ... ... ...
100000 Conny Sverkersson Volmarvägen 58 15455 Arnäsvall 0162-704967

exempel.kunder

id* kundnummer* namn* gatuadress* postnummer* postadress* telefon*
1 1000000001 Henrika Götasson Paulinavägen 22 34121 Sågmyra 0646-615801
2 1000000002 Eleonora Kajsasson Esaiasvägen 72B 40197 Södra Sunderbyn 0261-8747610
... ... ... ... ... .... ...
10000 1000010000 Terese Sirisson Rolandvägen 55A 93493 Svalsta 0787-7091312

exempel.personal

id* personalnummer* namn* gatuadress* postnummer postadress telefon
1 100001 Charlotta Elisabetsson Håkanvägen 15A 99067 Kvänum 0158-894314
2 100002 Toini Helgesson Mariannevägen 15 10119 Tumba 0823-6060412
... ... ... ... ... .... ...
1000 101000 Vilma Ingersson Fannyvägen 74F 84447 Öbonäs 0546-68050

Enkla sökningar går snabbt i alla tabellerna, även på oindexerade kolumner i tabellen exempel.personer, men joinar mellan två oindexerade kolumner kan bli mycket långsamma om det ingår många rader i båda av joinens operander.

Redovisning

Skriv en kort rapport om vad ni kom fram till. Det behöver inte vara någon formell rapport med försättsblad osv, utan det räcker med e-post eller motsvarande.

Arbeta i grupper om en eller två studenter. I undantagsfall kan man arbeta i grupper om tre, men fråga läraren först.

Det är tillåtet att samarbeta i större grupper än så, men varje grupp om 1-3 studenter måste fortfarande redovisa separat, och det måste också tydligt framgå (i rapporten eller på annat sätt) vilka som deltog i samarbetet.


Thomas Padron-McCarthy (Thomas.Padron-McCarthy@tech.oru.se), 4 mars 2007