SQL Server Express性能问题

SQL Server Express性能问题,sql,sql-server,sql-server-2005,performance,sql-server-express,Sql,Sql Server,Sql Server 2005,Performance,Sql Server Express,我知道我的问题听起来很傻,可能没有人会有完美的答案,但因为我在一个完全没有出路的情况下,这将使我觉得更好地张贴在这里 所以 我有一个500 Mb的SQL Server Express数据库。它包含5个表和30个存储过程。此数据库用于存储文章并用于网站。通常网页加载速度很快,比如说2到3秒。但是,sqlserver进程在这2或3秒内使用了100%的处理器 我试图找出哪个存储过程是问题所在,但找不到。似乎每读一次dans表中都包含这些文章(大约有155000篇,大约每15分钟增加20篇) 我添加了一

我知道我的问题听起来很傻,可能没有人会有完美的答案,但因为我在一个完全没有出路的情况下,这将使我觉得更好地张贴在这里

所以

我有一个500 Mb的SQL Server Express数据库。它包含5个表和30个存储过程。此数据库用于存储文章并用于网站。通常网页加载速度很快,比如说2到3秒。但是,sqlserver进程在这2或3秒内使用了100%的处理器

我试图找出哪个存储过程是问题所在,但找不到。似乎每读一次dans表中都包含这些文章(大约有155000篇,大约每15分钟增加20篇)

我添加了一些索引,但没有运气

这是因为表是全文索引的吗? 我应该用主键而不是日期来订购吗?我从来没有遇到过按日期订购的问题。。。。 我应该使用动态SQL吗? 我应该将主键添加到文章的URL中吗? 我应该为单独的列使用多个索引还是使用一个大索引

如果你想要更多的细节或代码,只管要求

基本上,每一个小小的暗示都是值得赞赏的


谢谢。

如果您的索引没有被使用,那么它通常表示两个问题之一:

  • 不可搜索的谓词条件,例如
    其中DATEPART(YY,Column)=
    。在函数中包装列将削弱或消除优化器有效使用索引的能力

  • 输出列表中未包含的列,如果您习惯于编写
    SELECT*
    而不是
    SELECT specific_列
    ,则很可能出现这种情况。如果索引没有覆盖您的查询,那么SQL Server需要对每一行逐个执行RID/键查找,这会使查询速度大大降低,以至于优化器决定改为执行表扫描


  • 看看其中一个是否适用于你的情况;如果您仍然感到困惑,我建议您使用更多关于您的模式、数据和缓慢的查询的信息来更新问题。500 MB对于SQL数据库来说非常小,所以这应该不会太慢。同时发布执行计划中的内容。

    使用SQL Profiler捕获应用程序中使用的许多典型查询。然后通过索引优化向导运行探查器结果。这将告诉您可以添加哪些索引进行优化


    然后查看性能最差的查询,并手动分析它们的执行计划。

    您可以在此处尝试查询,了解应该创建的索引缺失情况。(评论而不是回答,因为我不确定它是否能在Express上运行)感谢链接。。。我会查清楚的我确实查过了这就是我发现的。。。维护总成本-检索118900 2618499 BlogsSentries PK_BlogsSentries 84966 347327 BlogsSentries PK_BlogsSentries_Categories 13351 615079 BlogsFeedsUrl PK_BlogsUrl 2244 462470 BlogsCategories PK_BlogsCategories 67253 BlogsSentries IX_BlogsSentries_我创建的所有PK和索引。。。。为什么它们这么难维护?为什么检索使用率这么高?该死的,它会杀死身份识别…对不起,谢谢你的回答。。。我总是在我的SQL代码中使用特定的列名。尽管如此,有些列包含900多个字节,我无法编制索引。DB模式非常简单。。。4张桌子。。。但我总是要对其中的3个进行内部连接。。。在studio management中完成sql代码以测试存储过程后,我将发布更多信息。我曾使用sql profiler,但从未找到索引优化向导。。。我马上去查!谢谢!SQL探查器未与SQL Express一起安装。。它在remote中也能工作吗?@DeveloperID,您只需50美元就可以购买一份MS SQL Developer Edition。它将具有enterprise附带的所有工具。如果没有合适的工具,你不应该尝试开发。