对数据库执行了哪些查询以及它们需要多长时间?

时间:2017-05-04 14:38:27

标签: sql-server azure-sql-database

我在Azure中运行了一个Sql Server数据库,而且我遇到了一些我在本地托管的类似数据库中看不到的性能问题。

有没有办法确定对这些数据库执行查询的时间/时间/时长?

2 个答案:

答案 0 :(得分:0)

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

检查以下主题中的更多信息; How to trace with SQL Server profiler

在SQL事件探查器中运行跟踪在性能上非常难,所以最好不要让它运行太久。无论您运行什么查询,它都会对性能产生影响,因此在分析时间时要考虑到这一点。

答案 1 :(得分:0)

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

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

    希望它有所帮助。