[英]SQL Server Express performance issue
我知道我的问题听起来很愚蠢,可能没人会给出完美的答案,但是由于我对这种情况一无所知,因此让我感觉更好。
所以...
我有一个500 Mb的SQL Server Express数据库。 它包含5个表,可能还有30个存储过程。 该数据库用于存储文章,并用于Developer It网站。 通常,网页加载速度很快,例如2 ou 3秒。 但是,sqlserver进程在这2或3秒钟内使用了100%的处理器。
我试图找到问题所在的存储过程,但找不到。 似乎每一次读到表中dans都包含文章(大约有155,000,每15分钟添加20个左右)。
我添加了一些索引但没有运气...
是因为表是全文索引的吗? 我应该用主键而不是日期订购吗? 我按日期排序从来没有任何问题。...应该使用动态SQL吗? 是否应将主键添加到文章的URL中? 我应该将多个索引用于单独的列还是一个大索引?
我想要更多详细信息或代码位,只需提出要求。
基本上,每个小提示都值得赞赏。
谢谢。
如果未使用您的索引,则通常表明以下两个问题之一:
不可保留的谓词条件,例如WHERE DATEPART(YY, Column) = <something>
DATEPART WHERE DATEPART(YY, Column) = <something>
。 在函数中包装列会削弱或消除优化器有效使用索引的能力。
输出列表中未覆盖的列,如果您习惯于编写SELECT *
而不是SELECT specific_columns
的习惯,则很有可能。 如果索引不覆盖您的查询,则SQL Server需要对每一行逐一执行RID /键查找,这可能会大大降低查询速度,以至于优化器只是决定执行表扫描。
看看其中一种是否适合您的情况; 如果您仍然感到困惑,建议您使用有关架构,数据和缓慢查询的更多信息来更新问题。 对于SQL数据库,500 MB很小,因此这应该不会很慢。 还要发布执行计划中的内容。
使用SQL事件探查器捕获应用程序中使用的许多典型查询。 然后通过索引调整向导运行探查器结果。 这将告诉您可以添加哪些索引以进行优化。
然后查看性能最差的查询,并手动分析其执行计划。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.