考慮以下的商家評論資料庫綱目(database schema):
User(uId, name, star)
//使用者編號,姓名,星等
Store(sId, name, star, address, city)
// 店家編號,名稱,星等,地址,城市
Review(uId, sId, date, title, content, star, usefulness)
//使用者編號,店家編號,日期,標題,內容,星等,有用性
若我們有以下的SQL 敘述:
SELECT sId, name
FROM Store AS S
WHERE city = ‘Taipei’ AND
EXISTS
(SELECT *
FROM Review AS R
WHERE R.sId = S.sId AND R.uId IN
(SELECT DISTINCT uId
FROM User
WHERE star = 5));
請說明以上查詢句的意義。(5 分)
以上查詢句的執行效率可能不佳,請指出造成其效率不佳的語法,並改寫成一個
效率較佳的敘述。(10 分)
針對你所改寫的查詢句,若想進一步提升其執行效率,請問可以建置那些索引
(Index)?請寫出建置這些索引的SQL 敘述並說明原因。(5 分)