sql-server - 数据库查询一天一次运行缓慢
问题描述
我在带有 ASP.NET 的 SQL Server 2014 标准版上有一个生产数据库,该数据库使用在托管云环境中运行的实体框架。
我面临的问题是前几次运行缓慢(大约 10-15 秒)的一些查询。然后它开始正常运行并完美运行。
最初我认为这可能是参数嗅探的情况,但是在运行缓慢的查询时运行探查器时,我发现它从磁盘读取的次数相同,但需要很长时间。对于少数几次,查询运行缓慢。几次运行后,它工作得很好,在很短的时间内(300-700 毫秒)读取相同的读取次数。我还尝试在 SSMS 中第一次运行查询,发现它具有相同的执行计划,并且读取速度较慢和执行速度更快。
这是运行缓慢的查询之一。
exec sp_executesql N'SELECT
[GroupBy1].[A1] AS [C1]
FROM ( SELECT
COUNT(1) AS [A1]
FROM [dbo].[Alarm] AS [Extent1]
WHERE ([Extent1].[AssetID] = @p__linq__0) AND ([Extent1].[EventCode] IN (1152, 1153, 1154, 1155, 1156, 1157, 1158, 1159, 1160, 1161, 1162, 1163, 1164, 1165, 1166)) AND ([Extent1].[EventCode] IS NOT NULL) AND (((0 = [Extent1].[EventType]) AND (0 = [Extent1].[AlarmStatus])) OR ((0 <> [Extent1].[EventType]) AND (6 <> [Extent1].[AlarmStatus]))) AND (((0 = [Extent1].[EventType]) AND (0 = [Extent1].[AlarmStatus])) OR ((1 = [Extent1].[EventType]) AND ([Extent1].[AcknowledgeDate] IS NULL))) AND (11 <> [Extent1].[AlarmStatus]) AND (12 <> [Extent1].[AlarmStatus]) AND ([Extent1].[SourceID] = @p__linq__1) AND (([Extent1].[SiteID] = @p__linq__2) OR (([Extent1].[SiteID] IS NULL) AND (@p__linq__2 IS NULL)))
) AS [GroupBy1]',N'@p__linq__0 uniqueidentifier,@p__linq__1 bigint,@p__linq__2 uniqueidentifier',@p__linq__0='B0524A60-F980-4B82-A799-E788A9A4D04B',@p__linq__1=594520350,@p__linq__2='B02A51FE-2248-E611-A64E-782BCB72ACED'
我还尝试从计划缓存中获取任何慢速查询执行计划,但没有为查询找到慢速计划。
解决方案
推荐阅读
- css - 按钮高度不符合 Chrome 中的最小高度
- python - ModuleNotFoundError 使用 setup.py
- javascript - 如何在javascript中将数组添加到JSON对象?
- sql - SQL 连接,用于按商店和产品比较今年与去年的销售额
- mysql - 试图回显一个表,但它不工作
- java - 奇/偶非工作完美随机算法错误
- html - 不知道为什么我的 flexbox 项目内容没有位于中心
- android - admob:Ads:不建议在应用不在前台时显示插页式广告
- ios - UIButton 在用户按下 Home 按钮后变为 Inanimate
- browser - 尽管没有 Content-Security-Policy 标头,但仍应用 CSP