我有一些select语句可以从多个表中获取数据,通常它们会运行多次以更新应用程序上的列表,以供用户查看数据。由于我是关于视图的整个故事的新手,因此我读了article,它说视图应该取代长查询,而只是虚拟表以更快地访问数据,我想知道如何以及是否应该我用视图代替这些冗长的查询。
这是我的一些查询
IF @Action = 'SELECTALL'
BEGIN
SELECT hr.IdColaborador, hr.MotivoCriacao, hr.IdReq, Nome, hcb.Email, hr.RefInterna, hi.Descricao AS InfoLog, hs.Descricao AS STATUS, hd.DataAbertura AS DataCriacao FROM hRequisicao AS hr
JOIN hColaborador AS hcb ON hcb.IdColaborador = hr.IdColaborador
JOIN hStatus AS hs ON hs.IdStatus = hr.IdStatus
JOIN hInfoLogistica hi ON hi.IdInfoLogistica = hr.IdInfoLogistica
JOIN hDataLog hd ON hd.IdReq = hr.IdReq
WHERE hr.IdStatus != 6
END
IF @Action = 'SELECTALL_USERID'
BEGIN
SELECT hr.IdColaborador, hr.IdReq, Nome, hcb.Email, hr.RefInterna, hs.Descricao AS STATUS, hl.DataAbertura AS DataCriacao, hi.Descricao AS InfoLog FROM hRequisicao AS hr
JOIN hColaborador AS hcb ON hcb.IdColaborador = hr.IdColaborador
JOIN hStatus AS hs ON hs.IdStatus = hr.IdStatus
JOIN hDataLog AS hl ON hl.IdReq = hr.IdReq
JOIN hInfoLogistica AS hi ON hi.IdInfoLogistica = hr.IdInfoLogistica
WHERE hr.IdColaborador = @IdColaborador AND hr.IdStatus != 6
END
IF @Action = 'SELECT'
BEGIN
SELECT IdReq, hr.MotivoCriacao, hr.IdCodeRequest, hr.IdColaborador, Nome, hcb.Email, Projecto, Desenho, Indice, CadenciaMensal, NumCOMDEV, RefCliente, RefInterna, QTDLancamentoFormas, CapacidadeReal, Peso,
TipoCaixa, QTDPecasCaixa, UnidadeProducao, CelulaProducao, NumKanbansProducao, QTDComp, TipoMetodologia, QTDMetProd, hi.Descricao AS InfoLog FROM hRequisicao AS hr
JOIN hCodeRequest AS hcr ON hr.IdCodeRequest = hcr.IdCodeRequest
JOIN hCaixa AS hc ON hr.IdCaixa = hc.IdCaixa
JOIN hComponentes AS hcp ON hr.IdComp = hcp.IdComp
JOIN hMetodologiaProducao AS hmp ON hr.IdMetProd = hmp.IdMetProd
JOIN hColaborador AS hcb ON hcb.IdColaborador = hr.IdColaborador
JOIN hInfoLogistica AS hi ON hi.IdInfoLogistica = hr.IdInfoLogistica
WHERE IdReq = @IdReq
END
我从没使用过视图,我真的很想尝试一次应用它们以习惯它们并了解它们的工作原理,但是我不确定何时,如何使用它们以及它们是否只是一种视图。占位符以隐藏长代码