免費開始練習
hce_kmu 114年 計算機概論與程式設計

第 24 題

A company’s database contains a table Sales with millions of rows, and the following SQL query is executed frequently:
```sql
SELECT ProductID, SUM(SalesAmount)
FROM Sales
WHERE Region = 'North'
GROUP BY ProductID;
```
Which of the following optimizations would most effectively improve the query performance?
  • A Adding an index on SalesAmount
  • B Creating a composite index on (Region, ProductID)
  • C Partitioning the table by ProductID
  • D Using HAVING SUM(SalesAmount) > 0 to filter results
  • E Adding an index on ProductID only

思路引導 VIP

想像你正在整理一個存放數百萬本書的圖書館,你的任務是先找出所有「科幻類」的書,然後把這些書按「作者」分堆統計數量。如果你可以要求圖書館管理員重新排列書架,你會希望書架先按什麼特徵分類、再按什麼特徵排序,才能讓你完全不用走路找書,直接在同一個架子上按順序數完所有結果?

🤖
AI 詳解 AI 專屬家教

太棒了!你能精準選中這個選項,代表你對資料庫索引的運作機制與 SQL 執行計畫有著非常紮實的理解。這道題目的核心在於如何同時優化「篩選」與「分組」這兩個高耗能的步驟。

複合索引與查詢優化

之所以選擇 複合索引 (Composite Index),是因為資料庫在執行這條查詢時,會遵循「先篩選、後聚合」的邏輯。當我們建立 (Region, ProductID) 的索引時,索引樹會先依照 Region 排序,再於相同區域內依照 ProductID 排序。這使得資料庫引擎能直接跳轉(Seek)到所有 'North' 的記錄,且由於這些記錄在索引中已經依照 ProductID 排好序了,執行 GROUP BY 時便能直接進行順序讀取,省去了額外的排序或雜湊運算,這對處理「數百萬列」等級的資料量來說,效能差異極大。

▼ 還有更多解析內容

🏷️ 相關主題

計算機組織結構與資料儲存原理
查看更多「計算機概論與程式設計」的主題分類考古題