Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 我可以通过哪些方式加快Azure SQL Server查询的速度_Sql Server_Azure Sql Database - Fatal编程技术网

Sql server 我可以通过哪些方式加快Azure SQL Server查询的速度

Sql server 我可以通过哪些方式加快Azure SQL Server查询的速度,sql-server,azure-sql-database,Sql Server,Azure Sql Database,我正在使用MS Azure托管SQL Server数据库。SQL Server在这方面我还是个完全的新手 在那个数据库里,我有几百万条记录。我可以相当快地搜索主键,但我的一些索引列需要大约4:30+来执行查询 例如,我将查询 Select Top 100 * from Ticket__c where Contact__c = 'a191a00000134mcAAA' Contact\uu\c列已编制索引/未进行聚类。不确定我是否设置了最佳选项 为了提高性能,我应该看一些简单的事情。i、 e.我

我正在使用MS Azure托管SQL Server数据库。SQL Server在这方面我还是个完全的新手

在那个数据库里,我有几百万条记录。我可以相当快地搜索主键,但我的一些索引列需要大约4:30+来执行查询

例如,我将查询

Select Top 100 *
from Ticket__c
where Contact__c = 'a191a00000134mcAAA'
Contact\uu\c
列已编制索引/未进行聚类。不确定我是否设置了最佳选项

为了提高性能,我应该看一些简单的事情。i、 e.我应该以不同的方式编制索引。我需要定期运行某种索引功能吗?等等


对于我应该在哪里工作以提高数据库查询性能的所有提示,我都表示感谢。

确实,您需要定期维护现有索引并更新统计信息,如前所述。Azure自动化(Runbook)可以帮助自动化这些任务

Azure还可以通过自动创建查询可能需要的其他索引来帮助您。为此,您可能需要启用


Azure还为您提供性能建议。如果它们如所述存在,请应用它们。

确实,您需要定期维护现有索引并按所述更新统计信息。Azure自动化(Runbook)可以帮助自动化这些任务

Azure还可以通过自动创建查询可能需要的其他索引来帮助您。为此,您可能需要启用


Azure还为您提供性能建议。如有解释,请应用它们。

要使查询运行良好,您需要记住

1.应编制索引
2.服务器不应面临任何CPU、IO、RAM压力

对于给定的查询,如果查询是非集群的,则应该在查询中包含所有列

进一步使用下面的查询查看您的DTU在一段时间内是否始终平均高于90%。如果是这种情况,您应该升级您的层或根据度量调整查询

SELECT  
    AVG(avg_cpu_percent) AS 'Average CPU use in percent',
    MAX(avg_cpu_percent) AS 'Maximum CPU use in percent',
    AVG(avg_data_io_percent) AS 'Average data I/O in percent',
    MAX(avg_data_io_percent) AS 'Maximum data I/O in percent',
    AVG(avg_log_write_percent) AS 'Average log write use in percent',
    MAX(avg_log_write_percent) AS 'Maximum log write use in percent',
    AVG(avg_memory_usage_percent) AS 'Average memory use in percent',
    MAX(avg_memory_usage_percent) AS 'Maximum memory use in percent'
FROM sys.dm_db_resource_stats;

要使查询运行良好,您需要记住

1.应编制索引
2.服务器不应面临任何CPU、IO、RAM压力

对于给定的查询,如果查询是非集群的,则应该在查询中包含所有列

进一步使用下面的查询查看您的DTU在一段时间内是否始终平均高于90%。如果是这种情况,您应该升级您的层或根据度量调整查询

SELECT  
    AVG(avg_cpu_percent) AS 'Average CPU use in percent',
    MAX(avg_cpu_percent) AS 'Maximum CPU use in percent',
    AVG(avg_data_io_percent) AS 'Average data I/O in percent',
    MAX(avg_data_io_percent) AS 'Maximum data I/O in percent',
    AVG(avg_log_write_percent) AS 'Average log write use in percent',
    MAX(avg_log_write_percent) AS 'Maximum log write use in percent',
    AVG(avg_memory_usage_percent) AS 'Average memory use in percent',
    MAX(avg_memory_usage_percent) AS 'Maximum memory use in percent'
FROM sys.dm_db_resource_stats;

您可以尝试将索引添加到
Contact\c
列中。但是,更重要的是,您使用的是
TOP
,而没有
orderby
子句。这没有多大意义,因为您还没有告诉SQLServer您想要哪100条记录。在查询中添加一个
ORDER BY
子句。是否确实需要检索所有列?您可以尝试向
Contact\u c
列添加索引。但是,更重要的是,您使用的是
TOP
,而没有
orderby
子句。这没有多大意义,因为您还没有告诉SQLServer您想要哪100条记录。在查询中添加一个
ORDER BY
子句。是否确实需要检索所有列?