SQL Server Express 性能问题
Posted
技术标签:
【中文标题】SQL Server Express 性能问题【英文标题】:SQL Server Express performance issue 【发布时间】:2010-05-07 04:10:46 【问题描述】:我知道我的问题听起来很傻,可能没有人会给出完美的答案,但由于我完全陷入了困境,所以在这里发布它会让我感觉更好。
所以...
我有一个 500 Mb 的 SQL Server Express 数据库。它包含 5 个表和 30 个存储过程。该数据库用于存储文章并用于Developer It 网站。通常网页加载速度很快,比如说 2 或 3 秒。但是,sqlserver 进程在 2 或 3 秒内使用 100% 的处理器。
我试图找出问题所在的存储过程,但我找不到。似乎每次读入表格 dans 都包含文章(其中大约有 155,000 条,每 15 分钟添加大约 20 条)。
我添加了一些索引但没有运气...
是因为表格是全文索引的吗? 我应该使用主键而不是日期来订购吗?我从来没有遇到过按日期排序的问题...... 我应该使用动态 SQL 吗? 我应该将主键添加到文章的 URL 中吗? 我应该为单独的列使用多个索引还是一个大索引?
如果您想要更多详细信息或代码位,请直接询问。
基本上,每一个小提示都非常感谢。
谢谢。
【问题讨论】:
您可以在此处尝试查询msdn.microsoft.com/en-us/magazine/cc135978.aspx#S4,以了解您应该创建的缺失索引。 (评论而不是答案,因为我不确定它是否适用于 Express) 感谢您的链接...我一定会检查的 我没有检查它,这是我发现了什么......总成本维护 - retreival 118900个2618499 BlogsEntries PK_BlogsEntries 84966个347327 BlogsEntries_Categories PK_BlogsEntries_Categories 13351 615079 BlogsFeedsUrl PK_BlogUrl 2244个462470 BlogsCategories PK_BlogsCategories 67个253 BlogsEntries_Categories IX_BlogsEntries_Categories我所有的PK和和我创建的索引....它们为什么这么难维护,为什么检索使用率这么高? 该死的,它杀死了身份......对不起 【参考方案1】:如果您的索引没有被使用,那么它通常表示以下两个问题之一:
不可分割的谓词条件,例如WHERE DATEPART(YY, Column) = <something>
。在函数中包装列会削弱或消除优化器有效使用索引的能力。
输出列表中未覆盖的列,如果您习惯使用SELECT *
而不是SELECT specific_columns
,则很可能出现这种情况。如果索引没有覆盖您的查询,则 SQL Server 需要对每一行逐一执行 RID/key 查找,这会大大降低查询速度,以至于优化器只决定进行表扫描。
看看其中一项是否适用于您的情况;如果您仍然感到困惑,我建议您使用有关您的架构、数据和缓慢查询的更多信息来更新问题。 500 MB 对于 SQL 数据库来说非常小,所以应该不会很慢。同时发布执行计划中的内容。
【讨论】:
感谢您的回答...我总是在我的 SQL 代码中使用特定的列名。虽然,有一些列我无法索引,因为它们包含超过 900 个字节。 DB模式非常简单...... 4个表......但我总是需要对其中的3个进行内部连接......一旦我完成了sql代码来测试我的存储过程,我将发布更多信息工作室管理。【参考方案2】:使用 SQL Profiler 捕获您的应用中使用的大量典型查询。然后通过索引调整向导运行分析器结果。这将告诉您可以添加哪些索引来优化。
然后查看性能最差的查询并手动分析它们的执行计划。
【讨论】:
我使用过 SQL 分析器,但从未找到索引调整向导...我现在就去检查一下!非常感谢! SQL Profiler 没有与 SQL Express 一起安装。它在远程也可以工作吗? @DeveloperID,您只需 50 美元即可购买一份 MS SQL Developer Edition。它将包含企业中包含的所有工具。您不应该尝试在没有正确工具的情况下进行开发。 store.microsoft.com/microsoft/SQL-Server-2008-Developer-Edition/…以上是关于SQL Server Express 性能问题的主要内容,如果未能解决你的问题,请参考以下文章
将 SQL Server Express 升级到 Developer 性能计数器注册表一致性错误
如何从 C# 代码将 SQL Server CE 迁移到 SQL Server 2012 Express