考慮以下的討論版資料庫綱目(Database schema):
Member(mId, name, bDate, gender)
//會員編號,姓名,生日,性別
Article(mId, aId, title, content, postDate)
//會員編號,文章編號,標題,內容,張貼日期
Reply(mId, aId, rTime, content, responder)
//會員編號,文章編號,回覆日期時間,回覆內容,回覆者
若我們有以下的SQL 敘述:
SELECT mId, name
FROM Member AS M
WHERE gender = ‘M’ AND
EXISTS
(SELECT *
FROM Article AS A
WHERE mId = M.mId AND (mId, aId) IN
(SELECT DISTINCT mId, aId
FROM Reply
WHERE mId = A.mId AND aId = A.aId
GROUP BY mId, aId
HAVING COUNT(*) > 10));
請說明以上查詢句的意義。(5 分)
以上查詢句的執行效率可能不佳,請指出造成其效率不佳的語法,並
改寫成一個效率較佳的敘述。(10 分)
針對你所改寫的查詢句,若想進一步提升其執行效率,請問可以建置
那些索引(Index)?請寫出建置這些索引的SQL 敘述並說明原因。
(10 分)