10月
24
2006
分類:
最近更新:
2006-10-24
分組統計的二種查詢敘述
使用 inner join 和 sum() 統計進貨數量。由於要進行分組合計,遂有兩種可行且結果相同的查詢敘述。但這兩種查詢敘述的 explain 和效能有所差異,視資料庫系統的查詢引擎而定。
有兩份 data table , pos110 為商品主檔, pos803 為進貨明細。
條碼 | 品名 | 單位 |
---|---|---|
uno | name | unit |
471321654 | 好吃速食麵1 | 包 |
471321613 | 好吃速食麵2 | 包 |
471321625 | 好吃速食麵3 | 包 |
條碼 | 供應商代號 | 成本 | 建議售價 | 配置店號 | 進貨量 | 進貨單號 | 下單時間 |
---|---|---|---|---|---|---|---|
uno | supp_id | cost | list_price | cno | qty | tr_no | tr_date |
471321654 | A654 | 7.5 | 12.0 | K0201 | 120 | C200610200023 | 2006-10-20 10:23:21 |
471321654 | A654 | 7.0 | 12.0 | K0201 | 150 | C200602110002 | 2006-02-11 11:32:11 |
471321654 | A654 | 7.2 | 12.0 | K0202 | 100 | C200507010001 | 2005-07-01 16:32:21 |
471321613 | A654 | 7.5 | 12.0 | K0201 | 120 | C200610200023 | 2006-10-20 10:23:21 |
471321613 | A654 | 7.2 | 12.0 | K0202 | 100 | C200507010001 | 2005-07-01 16:32:21 |
471321625 | A412 | 8.0 | 12.0 | K0201 | 120 | C200610200023 | 2006-10-20 10:23:21 |
Method 1: 不使用子查詢
全部聯結後再行統計與條件篩選。
Method 2: 使用子查詢
先以子查詢統計與篩選進貨明細後,再將統計結果與商品主檔聯結。
許多分組統計的案例都會出現上述的查詢方法選擇,不同的資料庫系統查詢引擎會有不同的處理方式,且相關表格的記錄數量亦會影嚮處理效率,故效能差異視實際情況而定,應運用查詢分析工具 (query analyzer) 進行調整。
樂多舊網址: http://blog.roodo.com/rocksaying/archives/2357655.html