首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >慢MSSQL存储过程

慢MSSQL存储过程
EN

Stack Overflow用户
提问于 2017-11-09 21:27:53
回答 2查看 84关注 0票数 0

我不知道我缺少的是什么,但是我有一个存储过程,它将数据库中的最新内容(通过php)带回回来,但它真的很慢。

我有一个视图,它带来了一种特定类型的数据(大约8000条记录)。

我的存储过程看起来像这样,大约需要9-11秒才能完成,有什么建议吗?仁慈点,我对此并不陌生:)

代码语言:javascript
复制
 WITH maxdate As (
    SELECT id_cr, MAX(date_activation) "LastReading"
    FROM [pwf].[dbo].[content_code_service_new_content]
    GROUP BY id_cr
 )
 SELECT DISTINCT TOP 7 s.id_cr, s.date_activation, s.title, s.id_element
 FROM [pwf].[dbo].[content_code_service] s
 INNER JOIN maxdate t on s.id_cr = t.id_cr and s.date_activation = t.LastReading
  WHERE (
       id_service = @id_service
       AND  content_languages_list LIKE '%' + @id_language + '%'
  ) ORDER by date_activation DESC
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-11-09 21:52:25

好吧,你承认了你对这件事的认识,所以在这一切之后,你可能会想在如何优化SQL查询的性能上做一些谷歌搜索。

但是,这里有一个可以帮助您解决这个特殊问题的简单介绍。

首先是:“显示实际执行计划”。most中最有用的工具之一是“显示实际执行计划”--这可以在查询菜单中找到。选中此选项卡后,运行查询将在运行查询后在结果和消息旁边创建第三个选项卡。它将显示SQL引擎必须执行的每个操作,以及每个操作所占的百分比。通常,这足以找出可能出了什么问题(如果您的12个步骤中有一个执行了95%的时间,它可能表明它是如何缓慢地使用DB的)。

其中最重要的事情之一是查看它是如何从SQL读取数据的--它们是它构建的小树中最正确的节点。有几种可能性:

表扫描。--这通常是不好的--意味着它必须读取整个表才能得到它想要的东西。

聚集索引扫描。这通常也是不好的。聚集索引是表,如果它正在扫描它,就意味着它正在查看所有的记录。

非聚集索引扫描.不是最优的,但不一定是一个问题.它能够使用索引来帮助解决问题,但还不足以执行二进制搜索来查找所要查找的内容(必须扫描整个索引)。

索引寻找(集群或非聚集)。,这是你要追求的。它正在执行二进制查找,以快速获取它所寻找的特定数据。

所以!你是怎么得到索引的?确保您的表在适当的字段上有索引。

通过快速浏览查询,下面是SQL必须查找的列:

  • content_code_service_new_content.id_cr
  • content_code_service_new_content.date_activation
  • content_code_service.id_cr
  • content_code_service.date_activation
  • content_code_service.id_service
  • content_code_service.content_languages_list

因此,在不好的情况下,我会检查这两个表,并确保这些列都有索引。

票数 2
EN

Stack Overflow用户

发布于 2017-11-09 22:00:33

我对你的数据一无所知,但我猜这一点影响了你的表现

代码语言:javascript
复制
AND  content_languages_list LIKE '%' + @id_language + '%'

用这样的通配符搜索总是很慢。有关更多信息,请参见https://www.brentozar.com/archive/2010/06/sargable-why-string-is-slow/

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47211840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档