针对数据库执行了哪些疑问,以及他们花了多长时间



我有一个在Azure中运行的SQL Server数据库,并且我有一些性能问题,我在本地托管的类似数据库中没有看到。

是否有一种方法可以确定与这些数据库执行什么/何时/何时执行查询?

您可以使用SQL Server Profiler来确切查看SQL Server数据库上已运行的内容。

在下线程中检查更多信息;如何使用SQL Server Profiler

跟踪

在SQL Profiler中运行跟踪的性能很难,因此最好不要让它运行太久。它也会影响您正在运行的任何查询的性能,因此在分析时间安排时考虑到这一点。

Azure SQL对完成查询所需的I/O操作数量非常敏感。在本地,您仅受磁盘性能的限制,但是在Azure中,您有一些DTU限制,这些限制与磁盘操作数量高度相关。使用"查询性能见解"来找出哪些查询很慢,并执行以下操作:

  1. 从选择语句中删除不必要的列。请勿使用select * from,仔细指定所需的列。有时您必须更改应用程序逻辑以不获取所有内容。
  2. 检查执行计划。在大多数情况下,系统会建议为您的查询创建索引。
  3. 创建适当的索引,该索引将基于您的WHERE子句中的列,并将使用Inclast语句,以在查询中包含其他列中的数据。

例如,您需要选择5列,其中两列在Where子句中使用:

select Col1, Col2, DataCol1, DataCol2, DataCol3 from MYTABLE
where Col1=@Param1 and Col2=@Param2

您应该创建以下索引:

create index IX_MyIndex on MYTABLE(Col1,Col2) INCLUDE(DataCol1, DataCol2, DataCol3)

希望它有帮助。

最新更新