一个表数据量很大,可以用视图吗?

qq_32395957 2016-04-11 05:13:23
一个产品表数据量非常非常大,那么这张表如果用视图关联分类表的话,效率非常低把?视图创建代码如下

SELECT dbo.Product.*,dbo.Category.CategoryName as CategiryName
FROM dbo.Category INNER JOIN
dbo.Product ON dbo.Category .CategoryID = dbo.Product.CategoryID


我的理解是这样的,视图是一张虚拟表,当数据量达到千万级别时,这个时候要组成这样一张临时表本身就比较消耗资源,另外,视图不支持索引,那么从这么一个不支持索引的大表中取数据,效率肯定很对,不知我理解对不对,有没有更好的解决方案?
...全文
1317 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
hwyqy 2016-04-16
  • 打赏
  • 举报
回复
百W级设置好优秀的索引没问题 不要小瞧了现在计算机的性能以及数据库的优化 但关键是索引要配置好,包括降序或升降之类
qq_32395957 2016-04-14
  • 打赏
  • 举报
回复
引用 3 楼 From_TaiWan 的回复:
视图和临时表,是2个概念,前者部存储数据,只是代码,后者存储数据 你的意思,根据分类表和大表进行join运算,得到的视图供程序使用? 但是这么大表执行join会很慢 还是想其他办法的好
楼下有的说只要两张表都有索引影响就不大,我也觉得那么大的表inner join肯定比较慢
正怒月神 版主 2016-04-13
  • 打赏
  • 举报
回复
我认为给2个表创建索引就够了。
myhope88 2016-04-13
  • 打赏
  • 举报
回复
加索引,拆表
  • 打赏
  • 举报
回复
引用 9 楼 qq_32395957 的回复:
[quote=引用 8 楼 正怒月神的回复:]我认为给2个表创建索引就够了。
试图没有索引,两张表有索引有何用?[/quote] 你去查视图在条件后面加上索引字段查询看能不能用上就知道了,不知道你听谁说没用的,实践下
qq_32395957 2016-04-13
  • 打赏
  • 举报
回复
引用 8 楼 正怒月神的回复:
我认为给2个表创建索引就够了。
试图没有索引,两张表有索引有何用?
hywyjw 2016-04-12
  • 打赏
  • 举报
回复
当然可以大 在大 。。。。。
qq_32395957 2016-04-12
  • 打赏
  • 举报
回复
引用 4 楼 fxj805835819 的回复:
视图应该是提升代码的便捷性,对千万级数据量来说影响不大 提升效率来说有很多方面,比如操作符的使用,IN跟NOT IN换成EXISTS和NOT EXISTS就能提升效率; 还有就像表分区啊,都能提升效率,一定要视图的话,可以研究一下物化视图。 建议先从查询语句的优化入手
比如一张千万级别的表,如果使用inner join的话,意味这对千万的数据进行了操作,应该是效率很低的把,如果先把数据筛选出来然后再join,是不是性能上能提升很多?

SELECT * FROM(SELECT  top 10 * from Product)T INNER JOIN Category ON T.CategoryID=Category.CategoryID
先用top(实际中可能还有between and之类的)把需要的数据从千万条数据组取出来,然后再用inner join,这样应该就能解决数据量大而用join性能低的问题了把
範先森 2016-04-11
  • 打赏
  • 举报
回复
视图应该是提升代码的便捷性,对千万级数据量来说影响不大 提升效率来说有很多方面,比如操作符的使用,IN跟NOT IN换成EXISTS和NOT EXISTS就能提升效率; 还有就像表分区啊,都能提升效率,一定要视图的话,可以研究一下物化视图。 建议先从查询语句的优化入手
秋的红果实 2016-04-11
  • 打赏
  • 举报
回复
视图和临时表,是2个概念,前者部存储数据,只是代码,后者存储数据 你的意思,根据分类表和大表进行join运算,得到的视图供程序使用? 但是这么大表执行join会很慢 还是想其他办法的好
  • 打赏
  • 举报
回复
另外,可以尝试分表查询,千万级别的表,光查询四五个字段有慢,可以尝试分表,拆成小表查询,会更快。
  • 打赏
  • 举报
回复
类似与这样的大数据表的话,最好加上索引,这样的话,会快一些

62,052

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧