2013-05-10 110 views
0
  • (要求)
  • 我们需要一个快速可扩展解决
  • 我们需要更快的方式做特别查询;

我在考虑将我的10列表分成10个表格。 该表有10亿行。快速即席查询

原稿台 ID,VALUE1,VALUE2,VALUE3,VALUE4,值5,VALUE6,VALUE7,VALUE8,VALUE9,VALUE10

到10个表

  • ID,VALUE1(索引上值1)
  • ID,VALUE2(索引上值2)
  • ID,VALUE3(索引上VALUE3)
  • ID,VALUE4(索引上VALUE4)
  • ID,值5(索引上值5)
  • ID,VALUE6(索引上value6)
  • ID,VALUE7(索引上value7)
  • ID,VALUE8(索引上value8)
  • ID,VALUE9(索引在value9)
  • ID,vALUE10(索引上value10)

我的计划是,如果我在WHERE条件得到了5项条款,请5桌,并要求他们比使用一个HashSet设置的一个子集ID的。

我的问题是我重新发明轮子呢?这是"Column Store DB By RDBMS“还是别的什么?

+0

您使用了哪些数据库软件? – Codesleuth 2013-05-10 13:04:04

+0

你的查询是什么样的?每个值的频率是多少?典型查询的选择性(选择多少行)是什么?数据更新的频率如何? – 2013-05-10 13:10:14

回答

0

你并不需要10和表1和表10项指标都会有同样的结果。 对于它所依赖的性能在条款。如果你的where子句是一个与表达喜欢

select * from table 
where value1 = x 
and value3 = y 

然后将查询也无济于事。

如果你的where子句OR表达式像

select * from table 
where value1 = x 
or value3 = y 
or value5 = z 

然后也许改写了一个查询工会会更快。

select * from table 
where value1 = x 
union select * from table 
where value3 = y 
union select * from table 
where value5 = z 

但是性能总是取决于数据库引擎及其优化器。

+0

1个包含10个索引的表格将具有相同的结果。我应该在不丢失性能的情况下进行缩放。同桌上更多的索引意味着更少的表现。像10个女友一样生活在相同的邻居中。事情变得如此容易混乱。我喜欢他们在独立的城市。:)我想能够分配负载到集群。 – 2013-05-10 13:42:30

+0

为什么你认为10个表格可以比10个索引的表格更好? 10个表格,意味着对于1行,您需要插入10个表格。 1插入应该比10快。负载可以分布到一个集群,但应用程序不应该受到影响。这应该由数据库集群层接管。 – nakosspy 2013-05-10 18:56:15

+0

负载可以分配给一个集群,但应用程序不应该受到影响。 >>>多数民众赞成的原因。 – 2013-05-13 13:50:01