我有一个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