敬请高手指点:如何改进视图性能,使其全面取到数据

时间:2021-09-07 20:06:14
我构建了个 视图,
在 SQL server 2008 运行的很好
但是,在2000上面,昨晚上运行的还可以,没有发现问题
今天早上,后半部分字段(好像是从 m.以后),全部取不到数据了。

如何改进啊?
附件:
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE  View [dbo].[v_price_type_w] as

SELECT     t.id, t.oid, t.leib, t.pinm, t.guig, t.caiz, t.chanc, t.guapj, t.decldate, t.uid, t.reports, t.freshdate, t.yesterday, t.week, t.month, t.anchor, t.cityid, t.source, m.CompanyName, 
                      m.shortName, m.ProvinceName, m.ComE_mail, m.CompanyCodeA, m.CompanyCode, m.CompanyCodeB, m.Mobile, m.UserTypes, m.city, m.Pid, m.Cid, c.address, 
                      cl.zcode, m.LinkMan
FROM         dbo.cityprice_tabl AS t LEFT OUTER JOIN
                      dbo.MemberInfo AS m ON t.uid = m.UID LEFT OUTER JOIN
                      dbo.creditMemberAddress AS c ON c.UID = m.UID LEFT OUTER JOIN
                      dbo.C_List AS cl ON cl.Id = m.Cid

GO


8 个解决方案

#1


生成的视图中,
p.前面的字段,都能取到数据;
m.后面的字段,都取不到数据了,全部为空值了

#2


这些字段不显示了?
有动过表结构吗?

#3


你用的是left join ,你检查一下右边的表是不是没有数据了,你的 视图是没问题的

#4


单独把这个语句执行下看看
SELECT     t.id, t.oid, t.leib, t.pinm, t.guig, t.caiz, t.chanc, t.guapj, t.decldate, t.uid, t.reports, t.freshdate, t.yesterday, t.week, t.month, t.anchor, t.cityid, t.source, m.CompanyName, 
                      m.shortName, m.ProvinceName, m.ComE_mail, m.CompanyCodeA, m.CompanyCode, m.CompanyCodeB, m.Mobile, m.UserTypes, m.city, m.Pid, m.Cid, c.address, 
                      cl.zcode, m.LinkMan
FROM         dbo.cityprice_tabl AS t LEFT OUTER JOIN
                      dbo.MemberInfo AS m ON t.uid = m.UID LEFT OUTER JOIN
                      dbo.creditMemberAddress AS c ON c.UID = m.UID LEFT OUTER JOIN
                      dbo.C_List AS cl ON cl.Id = m.Cid

#5


表结构,没有动过

我又从 正在运行的SQL server 2008下面,复制这段好的代码,
到2000下面运行,还是不行。m.后面的字段,全部取不到数据,为空值

#6


单独运行 这段代码,结果也是错误的。和 视图运行的结果一样

#7


这个与视图没有关系
看来是没有符合条件的记录

#8


感谢 wufeng4552 和 hdhai9451 两位高工!

#1


生成的视图中,
p.前面的字段,都能取到数据;
m.后面的字段,都取不到数据了,全部为空值了

#2


这些字段不显示了?
有动过表结构吗?

#3


你用的是left join ,你检查一下右边的表是不是没有数据了,你的 视图是没问题的

#4


单独把这个语句执行下看看
SELECT     t.id, t.oid, t.leib, t.pinm, t.guig, t.caiz, t.chanc, t.guapj, t.decldate, t.uid, t.reports, t.freshdate, t.yesterday, t.week, t.month, t.anchor, t.cityid, t.source, m.CompanyName, 
                      m.shortName, m.ProvinceName, m.ComE_mail, m.CompanyCodeA, m.CompanyCode, m.CompanyCodeB, m.Mobile, m.UserTypes, m.city, m.Pid, m.Cid, c.address, 
                      cl.zcode, m.LinkMan
FROM         dbo.cityprice_tabl AS t LEFT OUTER JOIN
                      dbo.MemberInfo AS m ON t.uid = m.UID LEFT OUTER JOIN
                      dbo.creditMemberAddress AS c ON c.UID = m.UID LEFT OUTER JOIN
                      dbo.C_List AS cl ON cl.Id = m.Cid

#5


表结构,没有动过

我又从 正在运行的SQL server 2008下面,复制这段好的代码,
到2000下面运行,还是不行。m.后面的字段,全部取不到数据,为空值

#6


单独运行 这段代码,结果也是错误的。和 视图运行的结果一样

#7


这个与视图没有关系
看来是没有符合条件的记录

#8


感谢 wufeng4552 和 hdhai9451 两位高工!