Databasteknik II: Inlämningsuppgift 6 - Frågeoptimering i Mimer

Mål

Uppgift

Titta på exekveringsplaner i Mimer, och om ni har möjlighet gärna också i andra databashanterare som MySQL och PostgreSQL. I Mimer är kommandot "SET EXPLAIN ON" och även "SET EXECUTE OFF" användbart. I MySQL finns kommandot "EXPLAIN".

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.

Exempel på frågeställningar som man kan fundera över och experimentera med:

Lästips

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.

** här nedan betyder att kolumnen har ett primärindex.
* betyder att kolumnen har ett sekundärindex.
Ett understruket kolumnnamn betyder att den kolumnen är deklarerad som unik (antingen med primary key eller med unique).

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 inte alltför lång redogörelse om vad ni kom fram till. Var tydliga, och ha med exempel. Diskutera gärna med läraren.

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), 14 mars 2008