sql数据库的分表查询

qq_29192677 2016-07-19 09:47:37
现在有32万的数据,我们分成8份表,想通过ID查询,来知道这个ID在哪个表上,显示具体位置,自己想过通过取模方式获取,但是因为初学,select语句不会写,希望大神帮忙写一下!!!!!!
...全文
532 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
32万的数据,就开始用分表来查询了吗。。。 一般如果你的数据在几百上千万,可以通过分区表来解决,如果上亿,速度也慢了,可以考虑用分表来处理。
唐诗三百首 2016-07-20
  • 打赏
  • 举报
回复
其实32万的数据不算多, 可考虑直接一个表存储即可, ID上需有索引, 没问题的. 分成8个表存储, 查询时需先确定表几, 然后再去表几查,反而是走弯路了.
qq_29192677 2016-07-20
  • 打赏
  • 举报
回复
用union不就把表都连起来了?我分表的目的在于加快查询时间,类似于数据结构的快速排序,想通过ID/40000获取表几,再在表中查询,这样减少了时间,求帮忙!!!
kingtiy 2016-07-20
  • 打赏
  • 举报
回复
32W的数据,建好索引,完全不用分表. 只要逻辑上分就可以了.比如增加个自增列.取数据时候,对自列进行一个除8处理,就是8份数据.
薛定谔的DBA 2016-07-20
  • 打赏
  • 举报
回复
参考: SqlServer 分区视图实现水平分表 不知道id在哪个表不要紧,每个表加check 约束,插入汇总视图时,自动查询对应的表的。
中国风 2016-07-20
  • 打赏
  • 举报
回复
如果经常用,用建一下视图处理 e.g.
create view v_TableSource
as
select Source='表1',ID from 表1
union all
select Source='表2',ID from 表2
union all
select ...............
调用 SELECT Source FROM v_TableSource WHERE ID=@ID--传参变量
唐诗三百首 2016-07-19
  • 打赏
  • 举报
回复
8个表的ID字段上应有索引,

select * from 
(select datasource='t1',* from [表1]
 union all
 select datasource='t2',* from [表2]
 union all
 select datasource='t3',* from [表3]
 union all
 select datasource='t4',* from [表4]
 union all
 select datasource='t5',* from [表5]
 union all
 select datasource='t6',* from [表6]
 union all
 select datasource='t7',* from [表7]
 union all
 select datasource='t8',* from [表8]) t
where t.ID=[待查ID]

22,206

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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