我有一些从多个表中获取数据的选择语句,通常它们会运行多次以更新应用程序上的列表,以便用户查看数据。由于我对视图的整个故事非常陌生,我正在阅读这篇文章,它说视图应该替换长查询并且只是虚拟表以更快地访问数据,我想知道我应该如何以及是否应该使用视图来代替这些长查询。
这是我的一些疑问
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
我从未使用过视图,我真的很想尝试一次应用它们以适应它们并看看它们是如何工作的,但我还不确定何时以及如何使用它们以及它们是否只是一个占位符隐藏长代码