Использование вами trim()
запрещает использование индексов. Вам никогда не нужно это для соединений между таблицами. Итак:
SELECT m.year AS Year, COUNT(*) AS NOM , m.Title
FROM MOVIE m JOIN
M_Cast c
ON c.mid = m.mid JOIN
Person p
ON p.pid = c.pid
WHERE p.Gender = 'Female'
GROUP BY m.year
ORDER BY NOM DESC ;
В правильно структурированной базе данных идентификаторы в MOVIE
и PERSON
должны быть первичными ключами. Если это не так, вы должны это исправить.
Вам также нужен индекс для M_CAST(mid, pid)
или M_CAST(pid, mid)
.
Если ваши первичные ключи являются строками, вы должны исправить эти значения так TRIM()
НИКОГДА не нужно:
update movie
set mid = trim(mid);