我正在考虑将我的10列表分成10个表。 该表有10亿行。
原始表 ID,VALUE1,VALUE2,VALUE3,VALUE4,值5,VALUE6,VALUE7,VALUE8,VALUE9,VALUE10
分为10个表
我的计划是,如果我的WHERE条件中有5个子句,请转到5个表并询问它们,而不是使用哈希集来设置ID的子集。
我的问题是我正在重新发明轮子?这是"Column Store DB By RDBMS“还是其他什么?
答案 0 :(得分:0)
您不需要10张桌子。 1个包含10个索引的表将具有相同的结果。 对于性能,它取决于条款。如果你的where子句是一个AND表达式,如
select * from table
where value1 = x
and value3 = y
然后拆分查询将无济于事。
如果你的where子句是一个OR表达式,如
select * from table
where value1 = x
or value3 = y
or value5 = z
然后可能将一个查询改写为union会更快。
select * from table
where value1 = x
union select * from table
where value3 = y
union select * from table
where value5 = z
但性能总是取决于数据库引擎及其优化器。