我使用MS Azure来托管SQL Server数据库。而SQL Server是我仍然是一个完整的新手。
在该数据库中,我有几百万条记录。我可以在主键上快速搜索,但我的一些索引列大约需要4:30+才能执行查询。
例如,我将查询
Select Top 100 *
from Ticket__c
where Contact__c = 'a191a00000134mcAAA'
Contact__c
列已编入索引/非群集。不确定我是否选择了最佳选项。
为了提高性能,我应该考虑一些简单的事情。即我应该采用不同的索引方式。我是否需要定期运行某种索引功能?等...
所有提示都值得赞赏,因为我应该努力使数据库查询更好。
答案 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;