我有一個SQL表中有四列的表。其中兩個是存儲我們的服務器的性能指標的屬性和值列。我們不斷提出新的性能指標,我們不想重新設計我們的模式,所以我們這樣設計表格。如何在SQL中創建關閉屬性值表的視圖
問題是,當我創建一個視圖來查看錶格,就好像它的正常化一樣,我得到一個查詢,只是尖叫「哦,我的上帝這是廢話代碼」,因爲它涉及一個表連接了12次。這是我用於查看的查詢。
基本上,這感覺就像我做的事情真的不對,但我找不出解決問題的更好方法。
SELECT
astats.AQTORStatsID,
astats.ServerName,
astats.Remarks,
astats.StatsBeginDateTime,
astats.StatsEndDateTime,
asi1.AQTORStatValue as 'QtCPU_Average',
asi2.AQTORStatValue as 'QtCPU_TopQuintile',
asi3.AQTORStatValue as 'QtCPU_TopOnePercent',
asi4.AQTORStatValue as 'QtCl_Average',
asi5.AQTORStatValue as 'QtCl_TopQuintile',
asi6.AQTORStatValue as 'QtCl_TopOnePercent',
asi7.AQTORStatValue as 'UpdPrcStd_Average',
asi8.AQTORStatValue as 'UpdPrcStd_TopQuintile',
asi9.AQTORStatValue as 'UpdPrcStd_TopOnePercent',
asi10.AQTORStatValue as 'RcRsUPr_Average',
asi11.AQTORStatValue as 'RcRsUPr_TopQuintile',
asi12.AQTORStatValue as 'RcRsUPr_TopOnePercent'
FROM
tb_rAQTORStatsItem asi1
INNER JOIN tb_rAQTORStatsItem asi2 ON asi1.AQTORStatsID = asi2.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi3 ON asi2.AQTORStatsID = asi3.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi4 ON asi3.AQTORStatsID = asi4.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi5 ON asi4.AQTORStatsID = asi5.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi6 ON asi5.AQTORStatsID = asi6.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi7 ON asi6.AQTORStatsID = asi7.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi8 ON asi7.AQTORStatsID = asi8.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi9 ON asi8.AQTORStatsID = asi9.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi10 ON asi9.AQTORStatsID = asi10.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi11 ON asi10.AQTORStatsID = asi11.AQTORStatsID
INNER JOIN tb_rAQTORStatsItem asi12 ON asi11.AQTORStatsID = asi12.AQTORStatsID
INNER JOIN tb_dAQTORStats astats on asi12.AQTORStatsID = astats.AQTORStatsID
WHERE
asi1.AQTORStatName = 'QtCPU_Average'
AND asi2.AQTORStatName = 'QtCPU_TopQuintile'
AND asi3.AQTORStatName = 'QtCPU_TopOnePercent'
AND asi4.AQTORStatName = 'QtCl_Average'
AND asi5.AQTORStatName = 'QtCl_TopQuintile'
AND asi6.AQTORStatName = 'QtCl_TopOnePercent'
AND asi7.AQTORStatName = 'UpdPrcStd_Average'
AND asi8.AQTORStatName = 'UpdPrcStd_TopQuintile'
AND asi9.AQTORStatName = 'UpdPrcStd_TopOnePercent'
AND asi10.AQTORStatName = 'RcRsUPr_Average'
AND asi11.AQTORStatName = 'RcRsUPr_TopQuintile'
AND asi12.AQTORStatName = 'RcRsUPr_TopOnePercent'
我們使用父表來存儲有關我們在生成統計信息的時間段內所做的操作的信息。也就是說,它對我們正在使用的性能增強技術進行了評論,並提供了與收集的所有統計數據相關的其他信息。 – 2009-06-09 15:07:16