【发布时间】:2019-08-06 02:31:43
【问题描述】:
在 Azure SQL Server 上,我为包含 700 万行的表创建了一个 CLUSTERED INDEX 分区。然后我的网站需要 10 多秒才能加载数据。
但如果我不创建 CLUSTERED INDEX 分区,我的网站需要大约 6 秒来加载数据。如果我使用在 SQL Server Enterprise 上创建 CLUSTERED INDEX 分区的同一数据库并将其放在位于 LAN 中的服务器上,我的网站大约需要 3 秒来加载所有数据。
用于创建聚集索引的我的 sql 查询:
CREATE PARTITION FUNCTION PARTITION_MYDATA (CHAR(4)) AS RANGE RIGHT FOR VALUES
('1000','1001',...,'5000');
CREATE PARTITION SCHEME SCHEME_MYDATA AS PARTITION PARTITION_MYDATA ALL TO
([PRIMARY]);
CREATE CLUSTERED INDEX IX_MyData_partitioncol ON dbo.MyData(ClassificationCode)
WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)
ON SCHEME_MYDATA(ClassificationCode);
你能告诉我这个问题的任何解决方案吗?谢谢
【问题讨论】:
-
如果你共享查询的执行计划,我们可以知道。否则,很难说。
-
My sql 查询创建聚集索引:CREATE PARTITION FUNCTION PARTITION_MYDATA (CHAR(4)) AS RANGE RIGHT FOR VALUES ('1000','1001',...,'5000'); CREATE PARTITION SCHEME SCHEME_MYDATA AS PARTITION PARTITION_MYDATA ALL TO ([PRIMARY]) ;创建集群索引 IX_MyData_partitioncol ON dbo.MyData(ClassificationCode) WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON SCHEME_MYDATA(ClassificationCode)
-
返回多少行?您的查询是否指定
WHERE ClassificationCode = ...?上传您的实际执行计划 xml here 并将链接添加到您的问题。
标签: sql-server