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

愚者只看星不看答案 2020-06-09 11:33:10
在没有分区表以前,为了减少单表的记录数,我们将相同的表按照 年份 水平拆分到不同的表中,如销售记录表 Sales 拆分成类似这样
Sales_2020,Sales_2021,Sales_2022
当通过编程语言查询时,首先要确定需要查询的目标表名

当有了分区表后 假设有以下的表结构

CREATE TABLE [dbo].[test] (
[id] int DEFAULT '' NOT NULL,
[create_datetime] datetime NOT NULL,
[create_year] AS (datepart(year,[create_datetime])) PERSISTED NULL ---- 有意冗余
)
ON [PRIMARY]
GO

CREATE NONCLUSTERED INDEX [ix_test____create_year]
ON [dbo].[test] (
[create_year] ASC
)

列 create_datetime 应用了按 年 划分的分区函数
请问当使用以下查询时
select * from test where create_year=2020;

查询引擎会不会主动到分区是 2020 的逻辑表中去查询? 还是说要改进SQL语句才行。多谢多谢
...全文
253 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
直接就到分区2020
唐诗三百首 2020-06-11
  • 打赏
  • 举报
回复
select * from test where create_year=2020; 查询引擎会主动到分区是2020的逻辑表中去查询.
shoppo0505 2020-06-10
  • 打赏
  • 举报
回复
你这样只是查出了表名,你还需要对于这个表查询内容。

34,838

社区成员

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

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