MSSQL 2000 分表 查询

MSSQL 2000 用户表可能容纳100万行用户记录

程序中大多是以ID查询对应的用户信息,我想按ID分表,以提交数据库查询效率

每个表存放5000条记录,先预建200个表,表名和对应的ID值如下:
User_1 id(1~4999)
User_2 id(5000~9999)
User_3 id(10000~14999)
User_4 id(15000~19999)
User_5 ...
User_6
User_7
User_8
User_9
User_10
......

User_200

当新用户注册时,程序检测用户名是否存在,需要在200个表在查询
Select Top 1 id From User_1 Where UserName='chen'
Union All
Select Top 1 id From User_2 Where UserName='chen'
Union All
Select Top 1 id From User_3 Where UserName='chen'
Union All
Select Top 1 id From User_4 Where UserName='chen'
Union All
Select Top 1 id From User_5 Where UserName='chen'
......
Union All
Select Top 1 id From User_200 Where UserName='chen'

使用“Union All”连接200个表查询,查询效率是不是会很低?

我这样分表可行吗?有什么方法可以提高多表查询的效率吗?

作者: chenzhi0304   发布时间: 2011-06-12

为什么每个表只存5000记录?

作者: maco_wang   发布时间: 2011-06-12

就算用2个表,也只能一个一个查询,貌似没有其他方法.

作者: dawogui   发布时间: 2011-06-12

引用 1 楼 maco_wang 的回复:
为什么每个表只存5000记录?


每个表存5000条记录,这样单个表查询速度会快些。

作者: chenzhi0304   发布时间: 2011-06-12

为什么要分表 性能有问题吗 这么少的数据完全没必要分表

作者: rucypli   发布时间: 2011-06-12

引用 4 楼 rucypli 的回复:
为什么要分表 性能有问题吗 这么少的数据完全没必要分表


虽然数据不多,但软件读取更新非常频繁,性能下降,所以考虑分表。

作者: chenzhi0304   发布时间: 2011-06-12

引用 5 楼 chenzhi0304 的回复:
引用 4 楼 rucypli 的回复:
为什么要分表 性能有问题吗 这么少的数据完全没必要分表


虽然数据不多,但软件读取更新非常频繁,性能下降,所以考虑分表。

分与不分,读取的频繁程度不会改变,分了以后,读取得花更多的时间,性能下降得更厉害.

作者: dawogui   发布时间: 2011-06-12