首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >快速AdHoc查询

快速AdHoc查询
EN

Stack Overflow用户
提问于 2013-05-10 13:00:54
回答 1查看 64关注 0票数 0
  • (所需经费)
  • 我们需要一个快速可伸缩的解决方案。
  • 我们需要更快的方式进行临时查询;

我正在考虑把我的10列表分成10张表。这个表有100亿行。

原始表ID,VALUE1,VALUE2,VALUE3,VALUE4,VALUE5,VALUE6,VALUE7,VALUE8,VALUE9,VALUE10

成10张表

  • ID,VALUE1 (在value1上索引)
  • ID,VALUE2 (在value2上索引)
  • ID,VALUE3 (在value3上索引)
  • ID,VALUE4 (在value4上索引)
  • ID,VALUE5 (在value5上索引)
  • ID,VALUE6 (在value6上索引)
  • ID,VALUE7 (在value7上索引)
  • ID,VALUE8 (在value8上索引)
  • ID,VALUE9 (在value9上索引)
  • ID,VALUE10 (在value10上索引)

我的计划是,如果我的WHERE条件中有5个子句,请转到5个表中,并要求它们不要使用哈希集来设置ID的子集。

我的问题是我正在重新发明轮子?这是“通过RDBMS存储数据库列“还是别的什么?”

EN

回答 1

Stack Overflow用户

发布于 2013-05-10 13:12:11

你不需要10张桌子。一个包含10个索引的表将具有相同的结果。对于性能而言,这取决于子句。如果where子句是和表达式类似的

代码语言:javascript
复制
select * from table 
where value1 = x
and value3 = y

那么拆分查询就没有帮助了。

如果where子句是类似于

代码语言:javascript
复制
select * from table 
where value1 = x
or value3 = y
or value5 = z

那么,将一个查询重新定义为一个联合可能会更快一些。

代码语言:javascript
复制
select * from table 
where value1 = x
union select * from table 
where value3 = y
union select * from table 
where value5 = z

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16482880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档