分区key

alin_wjx 2009-12-07 03:07:28
创建完分区表插入数据后,进行检索时
select * from table where id='111'
后面还需要加分区key(datetime)做条件吗?
即:select * from table where id='111' and datetime = '2009/12/07'


还有创建完分区表 还要创建分区索引吗?
什么时候创建分区索引啊?

什么情况下能看出分区后的表的性能? 是数据要超过几万吗?

...全文
121 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
alin_wjx 2009-12-08
  • 打赏
  • 举报
回复
To Shawn_1978:
请帮忙解决一下 ,谢谢
Shawn_1978 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 alin_wjx 的回复:]
我的id和datetime是主键,CLUSTERED index,加不加的话,应该都是seek操作
我想问一下,对于分区表 在检索的时候是不是一定要把分区所用的key加在where里面
[/Quote]

没有说一定.对于被分区表的数据的检索.首先筛选所属分区的.然后再对其他条件查找.

举个例子
1.select * from table where id='111'
2.select * from table where id='111' and datetime = @datetime
3.select * from table where datetime = @datetime
你觉得那个相对更快些?哪个最慢呢?

我想第二个是最快的.第一个最慢的,你觉得呢?

alin_wjx 2009-12-07
  • 打赏
  • 举报
回复
我的id和datetime是主键,CLUSTERED index,加不加的话,应该都是seek操作
我想问一下,对于分区表 在检索的时候是不是一定要把分区所用的key加在where里面
Shawn_1978 2009-12-07
  • 打赏
  • 举报
回复
如果datetime列是index key.加上会更有效.那样就可以用SEEK。而不用Scan了.
alin_wjx 2009-12-07
  • 打赏
  • 举报
回复
To Shawn_1978:
还是 datetime不是查询条件的时候,不需要在where里添加
alin_wjx 2009-12-07
  • 打赏
  • 举报
回复
To Shawn_1978:
<<如果你需要的数据没有这个date的条件.当然就需要加了

如果我的检索条件是id=111
table是按照字段datetime分区的
这种情况下 where里要加datetime= (id=111)所在的datetime的值吗?
谢谢
Shawn_1978 2009-12-07
  • 打赏
  • 举报
回复
后面还需要加分区key(datetime)做条件吗?
即:select * from table where id='111' and datetime = '2009/12/07'

对于这个不一定.如果你需要的数据没有这个date的条件.当然就需要加了.那么sql engine会对所有分区都进行扫描.然后再其他条件过滤...

还有创建完分区表 还要创建分区索引吗?
这个也不是一定.如果你的表需要在分区键上创建CLUSTERED INDEX.那么那就根据它创建就好了
CREATE CLUSTERED INDEX IDX_T1_Datetime T1(datetime asc);

什么时候创建分区索引啊?
这个看你查询的需要了.

什么情况下能看出分区后的表的性能? 是数据要超过几万吗?
SET STATISTICS XML ON;
通过这个可以看到. 查询是基于成本的.至于多少是个点.你可以慢慢测试.通过WHERE来测试!
alin_wjx 2009-12-07
  • 打赏
  • 举报
回复
fredrickhu:
不好意思,老大那本书我没看。
fredrickhu看过的话,能帮我解析下吗?
--小F-- 2009-12-07
  • 打赏
  • 举报
回复
看老大的书上面都有讲的
<<深入浅出SQL 2005开发.管理与应用实例>>
alin_wjx 2009-12-07
  • 打赏
  • 举报
回复
dawugui:
你的帖子我见过,可是没找到我想要的信息啊
dawugui 2009-12-07
  • 打赏
  • 举报
回复
SQL分区表

http://blog.csdn.net/pt1314917/archive/2009/08/11/4435083.aspx
alin_wjx 2009-12-07
  • 打赏
  • 举报
回复
刚看到一个帖子:

分区表只有在多磁盘(尤其是raid)多cpu的服务器上才有性能提升,它是利用并行处理来提高性能,普通机器只会更慢


是这样吗?

22,206

社区成员

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

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