===========SQL Server 分区表的问题===================

愚者只看星不看答案 2020-06-08 05:55:09
只占用您二分钟时间。。。感谢。。

create table test
(
id int not null,
create_datetime datetime not null,
create_year AS (datepart(year,create_datetime)) PERSISTED,
);

create index ix_test____create_year on dbo.test
(
create_year asc
);

insert into test values('2020-6-4'),('2020-6-8'),('2020-12-31'),('2021-5-8');

-- 以上表在列 create_datetime 上应用了按年划分的分区函数
-- 现在要求查询 2020 年的所有数据 请问以下哪种查询语句可以充分利用分区表的优势 还是说下面我写的都不正确,感谢。。。感谢。。。

-- select * from test where year(create_datetime)=2020;
-- select * from test where create_year=2020;
...全文
155 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 1 楼 唐诗三百首 的回复:

select * from test where create_year=2020
感谢版主回复,我对分区表了解的太少,您给出的这个,不在分区列上进行查询 这样不会命中数据所在的分区吧? 这样会不会不是很高效?
唐诗三百首 2020-06-09
  • 打赏
  • 举报
回复

select * from test where create_year=2020
  • 打赏
  • 举报
回复
引用 3 楼 唐诗三百首 的回复:
一般来讲, 应避免一次读一整年的数据, 且拿全部字段. 这么大的数据量到前端是不合适的.
感谢版主,我这个问题提问的方法有问题,我重新开了一个贴子,麻烦看下 多谢 https://bbs.csdn.net/topics/396806532
唐诗三百首 2020-06-09
  • 打赏
  • 举报
回复
一般来讲, 应避免一次读一整年的数据, 且拿全部字段. 这么大的数据量到前端是不合适的.

34,838

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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