2006年10月24日

分組統計的二種查詢敘述

使用 inner join 和 sum() 統計進貨數量。由於要進行分組合計,遂有兩種可行且結果相同的查詢敘述。但這兩種查詢敘述的 explain 和效能有所差異,視資料庫系統的查詢引擎而定。


有兩份 data table , pos110 為商品主檔, pos803 為進貨明細。

pos110 (商品主檔)
條碼 品名 單位
uno name unit
471321654 好吃速食麵1
471321613 好吃速食麵2
471321625 好吃速食麵3
pos803 (進貨單)
條碼 供應商代號 成本 建議售價 配置店號 進貨量 進貨單號 下單時間
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) 進行調整。


Posted by shirock at 樂多Roodo! │10:36 │回應(0)引用(0)SQL/Database
工具:編輯本文
Ads by Roodo! 

引用URL

http://cgi.blog.roodo.com/trackback/2357655