
17-09-2007, 15:50
|
|
|
|
חבר מתאריך: 26.04.04
הודעות: 2,314
|
|
|
אופטימיזציה של שאילתא
במסד הנתונים mysql ישנן הטבלאות:
Sutdents: id, name etc
Courses: id, name etc
Attending: Course_id, Stunednt_id
יש אינדקס על student.id ועל course.id ואלו מפתחות ראשיים.
ישנם סטודנטים ללא קורסים וקורסים ללא סטודנטים.
צריך להציג את N הקורסים בעלי מספר סטודנטים הכי נמוך
כרגע רצה השאילתא הזו:
קוד:
select course.id, course.name, count(student.id) as cnt
from courses
left outer join attending on course.id = attending.course_id
join student on attending.student_id = student.id
group by course.id
order by cnt
limit N
ישנם עוד תנאים על הקורס אבל אף אחד מהם הוא לא בעל קרדינליות גבוהה
הבעייה היא שהשאילתא די איטית
איך ניתן לשפר את השאילתא הזו? אינדקסים?
תודה לעונים
|