表中不同键的相同数据需要大量时间

时间:2011-03-25 00:44:43

标签: sql-server rowlocking

我有一张桌子......

FactorID, col1 col2     Factor Value
1         a     2        1231
1         b     3        2342
2         a     2        1233
2         b     3        2344

这意味着...对于因子Id 1,我有1500条记录......和因子Id 2我有相同数量的记录。

对于因子Ids 1和2,除“因子值”外,每个值都相同。

当我在上面的表中加入一些其他表来获取数据时...... FactorID 1给了我快速结果......但是当我查询“2”时...执行永远不会结束。

这对我来说似乎很奇怪。它是否与行锁相关? 请帮助。

2 个答案:

答案 0 :(得分:1)

可能是连接正在使用表扫描。检查FactorID是否有索引。您看到的结果可能是因为因子ID 1记录是表中的第一个,当涉及到因子ID 2时,它会逐一跳过因子ID1的记录,直到它到达因子ID 2。

答案 1 :(得分:0)

当我在上面的表中加入一些其他表来获取数据时...... FactorID 1给了我快速的结果...... 但是当我查询“2”时......执行永远不会结束。


哇,这说的很少。

答案取决于三件事。

  1. 您的表格是如何定义的?
    • 你有主键吗?哪些列是键? 如果上表中只有两个“FactorID”值,那么对于主键来说这将是一个糟糕的选择。
    • 是否已将任何其他列编入索引?
    • 你真的有名为“col1”和“col2”的列吗?或者你只是说,“这些名字并不重要”?
    重要的是如何定义OTHER表。他们有钥匙吗?
  2. 表中有哪些类型的数据?多少行?
  3. 最重要的是:“当我和其他桌子一起加入桌子时”是什么意思?加入了多少个表?你是如何进行连接的?
  4. 另外,你说你的查询“永远不会结束” - 你等了多久?

    很抱歉,我们需要更多信息才能给出有意义的答案。