小编jin*_*ch 的帖子

优化表值函数SQL Server

我正在尝试优化这个表值函数。如果可以,我会将其更改为程序,但我不能。问题在于两个更新语句。我只在函数中保留了这两个,因为它们导致了主要的性能问题。我将第一个从外部应用重写为内部连接,我查看了统计数据,发现它们是错误的,所以我添加了一个选项(重新编译),它有很大帮助。问题出在第二次更新中。统计有误,不知道如何制定合适的执行计划,并通过提示进行优化。你知道如何缩短时间吗?我试图索引表变量,但没有结果。

这是一个执行计划https://www.brentozar.com/pastetheplan/?id=B1EdBo5e4

谢谢。

CREATE FUNCTION [dbo].[cfn_PlanServis_Seznam](
   @IDVazRole INT,
   @IDUzivatel INT,
   @IDRole INT,
   @IDLokalita INT,
   @lCid INT
)

RETURNS @PlanServis TABLE(
   lIDAuto INT,
   szSPZ VARCHAR(100),
   lDepozit INT,
   szTypVozidla varchar(100),
   szTypServisu NVARCHAR(300),
   szServisniPlan NVARCHAR(300),
   lZbyvaDni INT,
   lZbyvaKm INT,
   lNajetoKm INT,
   dtServis DATETIME,
   dcZbyvaMotohodin DECIMAL(15,1),
   dcNajetoMotohodin DECIMAL(15,1),
   IDVazPlanServisAuto INT,
   IDPlanServisDefinice INT,
   lBarva INT

)

AS

BEGIN
    DECLARE @Auto TABLE(
       lIDAuto INT,
       szSPZ VARCHAR(100),
       szTyp VARCHAR(100),
       IDCisTypServis INT,
       szTypServisu NVARCHAR(500),
       szServisniPlan NVARCHAR(500),
       lKmStart INT,
       dtStart DATETIME,
       lKmPriZavedeni INT,
       lUjetoPredZavedenim INT,
       dcMotohodinyStart DECIMAL(15,1),
       lIntervalKm …
Run Code Online (Sandbox Code Playgroud)

performance sql-server optimization t-sql execution-plan query-performance

5
推荐指数
1
解决办法
3585
查看次数

了解 SQL Server 缓存

我有一个棘手的问题,我不知道在哪里可以找到相关信息。

我在数据库服务器上安装了 SQL Server 2014 Enterprise。在这台服务器上存在多个数据库,有些属于我们,有些属于其他公司。

我关心的是缓存。我对 SQL Server 如何使用缓存内存快速检索数据页有基本的了解。你运行一个查询,通常,数据页被加载到缓存中,并且通过可重复的调用,它从中获得结果。

但是......我们的应用程序在我们的客户通常的工作时间被大量使用,但在晚上总是有维护任务在进行。我假设(如果我错了请告诉我)在白天,缓存加载了有用的数据页面,但在晚上由于维护任务而被删除,因此第二天,当客户开始进行交易时,数据页必须首先再次加载到缓存中,这需要时间并减慢很多事情的速度。

那么,我能以某种方式证明这种情况是否发生吗?

如果是,我可以管理吗?例如以某种方式告诉 SQL Server 不加载到缓存中?

我将不胜感激一些讨论这个话题的具体文章。我找不到任何,或者更好地说,我不知道如何命名这个问题。

sql-server sql-server-2014

3
推荐指数
1
解决办法
7568
查看次数