標籤:建立 理由 rod The 查詢 綁定 編寫 服務 資訊
設某全國性的運輸企業建立了大型OLTP系統,並在該系統之上建立了資料倉儲。OLTP系統和資料倉儲中有如下資料表:
運輸明細表(運輸單ID,發送站ID,終到站ID,貨物ID,貨物重量,運輸價格,發貨日期)
匯總表1(發送站ID,終到站ID,貨物ID,發貨日期,總重,總運價)
匯總表2(發送站ID,終到地區ID,貨物ID,發貨日期,總重,總運價)
匯總表3(發送站ID,終到站ID,貨物ID,發貨月份,總重,總運價)
匯總表4(發送地區ID,終到地區ID,貨物類別ID,發貨日期,總重,總運價)
該企業管理的貨運站約有100個,貨物約有500種共10類,各匯總表都建有主碼,且各表有合理的維護策略,在每次維護後資料能保持一致。設有視圖V,該視圖的訪問頻率很高,其查詢結果模式為(發送地區ID,終到站ID,發貨月份,總重,總運價),該視圖現以匯總表1為計算資料來源。經監控發現,匯總表1的被訪問頻率過高,導致系統整體效能下降,而其它匯總表被訪問頻率較低。在不增加匯總表和索引的情況下,請給出一個改善系統服務效能的最佳化方案,並簡要說明理由。
參考答案:
由於匯總表1和視圖的模式訪問頻率都很高,而且視圖的資料來源來自匯總表1,又因為其他匯總表的訪問頻率較低,所以只需要將視圖的資料來源綁定為匯總表3,因為匯總表3也可以滿足視圖的輸出模式。這樣不僅提升了匯總表3的資料訪問率,而且降低了匯總表1的資料訪問率,系統效能和服務效能得到了很大的最佳化。又因為貨物約有500種,共10類,可以再建立一個視圖綁定資料來源為匯總表4,這樣就可以充分利用匯總表4的資料資訊,從而可以進一步完善系統的效能的最佳化。
設有商品表(商品號,商品名,單價)和銷售表(銷售單據號,商品號,銷售時間,銷售數量,銷售單價)。其中,商品號代表一類商品,商品號、單價、銷售數量和銷售單價均為整型。
請編寫查詢某年某商品的銷售總毛利的預存程序,毛利=銷售數量×(銷售單價-單價)。要求商品號和年份為輸入參數,總毛利用輸出參數返回。
參考答案:
CREATE PROCEDURE PRODUCT @商品號 int,@年份 int,@毛利 int output
AS
DELCARE
@某商品銷售量 int,@某商品進價 int,@某商品銷售單價 int
BEGIN
Select @某商品進價=單價 from 商品表 [email protected]商品號=商品號
Select @商品銷售單價=銷售單價,@某商品銷售量=count()
from 銷售表 [email protected]商品號=商品號 and銷售時間[email protected]年份
IF @某商品進價 is NULL THEN
ROLLBACK;
RETURN;
END IF;
IF @某商品銷售單價 isNULL THEN
ROLLBACK;
RETURN;
RNDIF;
SET @毛利=(@某商品銷售單價[email protected]某商品進價)@某商品銷售量
GO
電腦三級資料庫設計與應用題