SQL Server Express 性能问题

标签 sql sql-server sql-server-2005 performance sql-server-express

我知道我的问题听起来很愚蠢,可能没有人能给出完美的答案,但由于我对这种情况完全陷入了困境,所以将其发布在这里会让我感觉更好。

所以...

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

我尝试找出问题所在的存储过程,但找不到。似乎每次读到表 dans 都包含文章(大约有 155,000 篇文章,每 15 分钟添加 20 篇左右)。

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

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

如果您想要更多详细信息或代码位,请询问。

基本上,每一个小提示都非常值得赞赏。

谢谢。

最佳答案

如果您的索引未被使用,则通常表明存在以下两个问题之一:

  1. 不可控制谓词条件,例如 WHERE DATEPART(YY, Column) = <something> 。将列包装在函数中会削弱或消除优化器有效使用索引的能力。

  2. 输出列表中未覆盖的列,如果您习惯编写 SELECT *,则很可能出现这种情况而不是SELECT specific_columns 。如果索引没有覆盖您的查询,则 SQL Server 需要对每一行逐行执行 RID/键查找,这会大大减慢查询速度,以致优化器决定进行表扫描。

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

关于SQL Server Express 性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2786144/

相关文章:

c# - 选择语句如何从 "*"读取所有内容

带条件的SQL

mysql - 创建 MySQL 表时添加对 2 列的约束时出错

sql - 数据库函数 VS Case 语句

database - SQL Server 2005维护计划建议

sql-server - 在 SQL 和 C# 中根据出生日期计算年龄?

java - java中的多线程持久队列

php - PDOException : SQLSTATE[IMSSP]: Tried to bind parameter number 65536. SQL Server 最多支持2100个参数

sql-server - 更改了连接字符串,但 mvc 应用程序仍然使用 localdb

sql-server - SQL 服务器 2005 : Select that Joins Tables from a Remote Server Runs Too Slowly - When I "select min(column)"