什么都无法检索SQL Server请求很慢?

时间:2010-07-02 15:05:56

标签: performance sql-server-express

我们在一个非常简单的条件下遇到了“SQL Server Express 2005”的奇怪性能问题。

我们有一个表格:[timestamp],[id],[value]列。 并且[timestamp] + [id]上只有一个主要唯一索引。

该表包含大约68.000.000条记录。

请求是: SELECT TOP 1时间戳FROM表WHERE id = 1234 ORDER BY timestamp

如果此id至少有一条记录,则结果将在几毫秒内给出。 如果此id的 no 记录,则结果至少在30秒内给出!

我们尝试了许多其他简单的类似请求,只要我们没有相应的id记录,处理时间就非常长。

你有什么解释和想法可以避免这种情况吗?

2 个答案:

答案 0 :(得分:1)

TOP 1 ORDER by what?

如果找到一条记录,它必须扫描整个表以查找更多记录,因为您没有 id。的索引。

如果你这样做了,但想要“ORDER BY timestamp”,它仍然会进行表扫描,因为它不知道id在时间戳索引中是唯一的(尽管它可能对你有意义,因为id被声明为唯一的,说 - 是吗?如果它不是一个独特的索引,或者作为多列索引中的第一个字段? - 或者它们都单调增加,比如说 - 是吗?)

答案 1 :(得分:0)

如果ID是唯一ID,则不需要ORDER BY - 只有该字段的索引就足够了。