我正在考虑把我的10列表分成10张表。这个表有100亿行。
原始表ID,VALUE1,VALUE2,VALUE3,VALUE4,VALUE5,VALUE6,VALUE7,VALUE8,VALUE9,VALUE10
成10张表
我的计划是,如果我的WHERE条件中有5个子句,请转到5个表中,并要求它们不要使用哈希集来设置ID的子集。
我的问题是我正在重新发明轮子?这是“通过RDBMS存储数据库列“还是别的什么?”
发布于 2013-05-10 13:12:11
你不需要10张桌子。一个包含10个索引的表将具有相同的结果。对于性能而言,这取决于子句。如果where子句是和表达式类似的
select * from table
where value1 = x
and value3 = y那么拆分查询就没有帮助了。
如果where子句是类似于
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但是性能总是取决于数据库引擎及其优化器。
https://stackoverflow.com/questions/16482880
复制相似问题