关于多表查询分页的问题(进来看看,别小看这个问题!)

yqyqyoyo 2010-09-06 04:19:57
现有这么一个需求:数据是按照月来分表存储的,例如:2010年9月为一张表(tb_201009),10年9月份的数据全都存储到tb_201009表中。2010年8月份为另外一张表(tb_201008),10年8月份的数据存储到表tb_201008中。两张表的数据结构都是一样的。

另外说明一下,这里的每张表中的数据都在30万以上,所以如果查询的效率也是需要考虑的。
现在要做的是一个查询功能,给一个时间区间,例如查询 2010-07-01至2010-09-30日的数据,该怎么做呢?

高手,期待您们的到来。

...全文
202 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
别样苍茫 2010-09-07
  • 打赏
  • 举报
回复
可以用lucene.net全文检索实现

先创建索引,然后查询,效率已经得到很多人的验证了

参考资料
wuyq11 2010-09-06
  • 打赏
  • 举报
回复
建索引,inner join
分页
根据2010-07-01至2010-09-30范围,生成表名
exec (@sql)
  • 打赏
  • 举报
回复
大么 ? 我们表的数据都是上亿条的
infim 2010-09-06
  • 打赏
  • 举报
回复
这么大的表,csdn里估计没啥答案吧。
xuan.ye 2010-09-06
  • 打赏
  • 举报
回复
with list
{
select rownumber() as xh,* from a
inner join b a.id=b.wid
}

select * from list where xh between 1 and 10
wkd04 2010-09-06
  • 打赏
  • 举报
回复
看你的表如何用,才有具体的方案。
这个我们现在是临时表加物理分月, 表按年分区的方式处理的。
每个月一张表虽然有冗余,索引加存储过程吧。

“我在SQL 查询分析器里面直接用SELECT * FROM TABLE 查询,显示出30万数据,大概需要6秒钟。
就算是确定到了表去查,这样还是太慢了。”
我用“SELECT * FROM TABLE ”查询100万条数据要1分02秒。
关键是会一次加载30万条数据吗?
symbol_bc 2010-09-06
  • 打赏
  • 举报
回复
那其实你的问题和分不分页无关,一张表30万条数据,你就是想怎样提高这个速度。
chengwangtianxia 2010-09-06
  • 打赏
  • 举报
回复
我也想知道,共同期待高手.
yqyqyoyo 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 z050301402 的回复:]
用儲過程 吧 一次不要全部读出来
[/Quote]

存储过程肯定是要用的。问题是这个存储过程要怎么写。
z050301402 2010-09-06
  • 打赏
  • 举报
回复
用儲過程 吧 一次不要全部读出来
yqyqyoyo 2010-09-06
  • 打赏
  • 举报
回复
哎,居然没人来回答这个问题。
dong2006 2010-09-06
  • 打赏
  • 举报
回复
只知道用时间去查出表内容然后用union all
帮顶
yqyqyoyo 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 daijinhua 的回复:]
不能理解为什么要按月份分表,感觉有点画
/^\/^\
_|__| O|
\/ /~ \_/ \
\____|__________/ \
\_______ \
`\ \ \
| | \
/ / \
/ / \\
/ / \ \
/ / \ \
/ / _----_ \ \
/ / _-~ ~-_ | |
( ( _-……
[/Quote]

那是你的感觉吧。 如果不按月分表,每天上万的新数据写入,每月数据几十万,一年的数据就是几百万了,请问你有什么办法解决在这个表中来做查询操作?
yqyqyoyo 2010-09-06
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 diandian82 的回复:]
那只能根据时间判断从哪张表里取了,最后再把结果union all起来。
[/Quote]

程序根据时间来判断从哪个表来取,这个肯定是需要做的。
我在SQL 查询分析器里面直接用SELECT * FROM TABLE 查询,显示出30万数据,大概需要6秒钟。
就算是确定到了表去查,这样还是太慢了。
银-魂 2010-09-06
  • 打赏
  • 举报
回复
不能理解为什么要按月份分表,感觉有点画
/^\/^\
_|__| O|
\/ /~ \_/ \
\____|__________/ \
\_______ \
`\ \ \
| | \
/ / \
/ / \\
/ / \ \
/ / \ \
/ / _----_ \ \
/ / _-~ ~-_ | |
( ( _-~ _--_ ~-_ _/ |
\ ~-____-~ _-~ ~-_ ~-_-~ /
~-_ _-~ ~-_ _-~
~--______-~ ~-___-~添足
diandian82 2010-09-06
  • 打赏
  • 举报
回复
那只能根据时间判断从哪张表里取了,最后再把结果union all起来。
yqyqyoyo 2010-09-06
  • 打赏
  • 举报
回复
没人过来看? 是不是觉得这个问题太简单了?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧