问一个查询效率问题

小灰狼 技术主管  2019-12-13 11:45:55
字段的数量对查询效率是如何产生影响的?

比如说一个表有200个字段,数据量足够大,比如有5000万吧!
另外一种处理:把这200个字段的表,按业务类型、需求等,拆分成几个字段较少的表(一个主表、几个从表),使之字段数量不超过50个,它们是一对一关系,通过同一个主键进行关联

那么,对同一个查询:
select col1, col2, col3, col4, ......col10 from my_table_name where ......
查询返回结果不超过100行

假设 col1, col2...... col10 都在同一个小表中。
这样的查询,是否在小表中的查询速度会比在总表中有明显提升?
...全文
69 5 点赞 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
js14982 2019-12-16
如果发现数据查询实在太慢,加索引或分区都无果的情况,还是提议拆表,这个是当时规划的时候没有规划好。后期想改动很麻烦,要考虑到各方面的因素。
  • 打赏
  • 举报
回复
小灰狼 2019-12-14
引用 3 楼 js14982 的回复:
引用 2 楼 小灰狼 的回复:
现在这样的规划的问题呢? 查询速度还是很慢吗,可以尝试用分区表和索引的方法提高查询速度。
现在是在做重构,已经进行了表的拆分,但是数据量还不够大,并且也没有创建数据进行测试 其实我主要是想了解一下,这种业务情况下,拆表还有没有必要,毕竟拆过之后,程序就变得复杂了
  • 打赏
  • 举报
回复
js14982 2019-12-13
会的,oracle最小存储单位是块,一个块默认大小为8k,假如单行的数据量大小未超过一个块(即8k),这一行数据就是存储在单个块中。如果数据量过大,大于8k,即会存在跨块存储,即一行数据存储在2个或者更多的块中。跨块存储会导致数据库的查询,性能都有影响,所以一般都不建议跨块来存储。
  • 打赏
  • 举报
回复
js14982 2019-12-13
引用 2 楼 小灰狼 的回复:
现在这样的规划的问题呢? 查询速度还是很慢吗,可以尝试用分区表和索引的方法提高查询速度。
  • 打赏
  • 举报
回复
小灰狼 2019-12-13
引用 1 楼 js14982 的回复:
会的,oracle最小存储单位是块,一个块默认大小为8k,假如单行的数据量大小未超过一个块(即8k),这一行数据就是存储在单个块中。如果数据量过大,大于8k,即会存在跨块存储,即一行数据存储在2个或者更多的块中。跨块存储会导致数据库的查询,性能都有影响,所以一般都不建议跨块来存储。
你好 我们的业务情况有点特别 比如一个表200个字段,但主要的字段大约是80个,这80个字段通常非空。然后其它的120个左右的字段大多数情况下是取空值。现在的做法是,80个字段一个表,另外120个字段,再按业务和查询需求分成了四个表。如果那个80个字段的主表有5000万条记录,那么每个子表应该不超过10万条。
  • 打赏
  • 举报
回复
相关推荐
发帖
基础和管理
加入

1.7w+

社区成员

Oracle 基础和管理
申请成为版主
帖子事件
创建了帖子
2019-12-13 11:45
社区公告
暂无公告