我可以通过哪些方式加速Azure SQL Server查询

时间:2018-02-22 02:07:41

标签: sql-server azure-sql-database

我使用MS Azure来托管SQL Server数据库。而SQL Server是我仍然是一个完整的新手。

在该数据库中,我有几百万条记录。我可以在主键上快速搜索,但我的一些索引列大约需要4:30+才能执行查询。

例如,我将查询

Select Top 100 *
from Ticket__c
where Contact__c = 'a191a00000134mcAAA'

Contact__c列已编入索引/非群集。不确定我是否选择了最佳选项。

为了提高性能,我应该考虑一些简单的事情。即我应该采用不同的索引方式。我是否需要定期运行某种索引功能?等...

所有提示都值得赞赏,因为我应该努力使数据库查询更好。

2 个答案:

答案 0 :(得分:2)

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

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

Azure还为您提供性能建议。如果按照here的说明存在,请申请。

答案 1 :(得分:0)

要使查询表现良好,您需要记住

1.应编入索引 2.Server不应该面对任何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;