gpt4 book ai didi

database - Azure SQL 如何检查分区逻辑

转载 作者:行者123 更新时间:2023-12-03 03:23:10 27 4
gpt4 key购买 nike

我有一个表,我按分区,我的表

CREATE TABLE test
(
date DATE,
/// other fields

) on dailyPartitionScheme(date)

当我进行查询时

Select * from test where date = {d '2023-05-30'}

它会进入相应的分区还是会扫描整个表?我如何验证它正在扫描哪个分区?

我还有另外三个过滤器,它们将出现在我的所有查询中,即 dep_ididlast_seen

我应该在这 3 个字段上创建聚集索引以获得最佳查询性能吗?我是否还需要在索引中包含日期

最佳答案

我的理解是,当您查询示例时:SELECT * FROM Day_table WHERE last_seen = {d '2023-05-30'}它只会扫描与“last_seen”列中的日期“2023-05-30”相对应的相应分区。

如果要验证查询正在扫描哪个分区,可以使用SQL Server Management Studio (SSMS)SQL Server Profiler 工具,用于捕获针对数据库执行的查询并确定正在访问哪个分区。

例如,我创建了一个名为 Day_table 的表。具有以下架构。

CREATE TABLE Day_table(
dep_id INT,
id INT,
last_seen DATE,
data VARCHAR(50),
day_of_week VARCHAR(20)
);

使用查询 Select last_seen from Day_table where last_seen = {d '2023-05-30'} 和 Select * from Day_table where last_seen = {d '2023-05-30'}

enter image description here我想看看它正在扫描哪个分区。

要查看此内容,您可以转到 sql Profiler在SSMS工具选项卡>SQL服务器>通过身份验证连接到您的SQl服务器>事件选择> enter image description here

选择“SQL:BatchCompleted”和“RPC:Completed”事件。

enter image description here

点击“列过滤器”按钮设置查询过滤器。

在“列过滤器”窗口中,从“列名称”下拉列表中选择“TextData”。

将过滤运算符设置为“Like”并输入您要跟踪的查询,例如: enter image description here

Like '%SELECT * FROM Day_table WHERE last_seen = {d ''2023-05-30''}%'

enter image description here

关于聚集索引,您可以使用 3 个字段以获得更好的性能。我已经为表应用了聚集索引

CREATE CLUSTERED INDEX IDX_Clust_Index_Day_table
ON Day_table (dep_id, id, last_seen);


SELECT *
FROM Day_table
ORDER BY dep_id, id, last_seen;

enter image description here

关于database - Azure SQL 如何检查分区逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76364169/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com