0

私はテーブルを持っています...

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

つまり...ファクターId1の場合、1500レコードがあります...そしてファクターId 2の場合、同じ数のレコードがあります。

ファクターID1および2の場合、「ファクター値」を除いてすべての値は同じです。

上記のテーブルを他のテーブルと結合してデータをフェッチすると...FactorID1ですぐに結果が得られます...しかし、「2」をクエリすると...実行が終了することはありません。

これは私には奇妙な誤りのようです。行ロックに関連するものですか?私を助けてください。

4

2 に答える 2

1

結合がテーブルスキャンを使用している可能性があります。FactorIDにインデックスがあるかどうかを確認します。表示されている結果は、FactorID 1レコードがテーブルの最初にあり、FactorID 2になると、FactorID2になるまでFactorID1のレコードを1つずつスキップし続けるためである可能性があります。

于 2011-03-25T00:48:49.377 に答える
0

 

上記のテーブルを他のテーブルと結合してデータをフェッチすると...FactorID1ですぐに結果が得られます...しかし、「2」をクエリすると...実行が終了することはありません。


うわー、それはほとんど言っていません。

答えは3つのことに依存します。

  1. テーブルはどのように定義されていますか?
    • 主キーはありますか?どの列がキーですか?上記の表に「FactorID」の値が2つしかない場合は、主キーとしては適切ではありません。
    • 他の列にインデックスが付けられていますか?
    • 実際に「col1」と「col2」という名前の列がありますか?それとも「名前は関係ない」と言っているだけですか?
    OTHERテーブルをどのように定義するかも重要です。彼らは何か鍵を持っていますか?
     
  2. テーブルにはどのような種類のデータがありますか?行数は?
     
  3. 最も重要なこと:「テーブルを他のテーブルと結合するとき」とはどういう意味ですか?結合されているテーブルはいくつですか?参加はどうですか?

さらに、クエリは「終わらない」と言います。どのくらい待ちましたか?

申し訳ありませんが、意味のある答えを出すには、さらに多くの情報が必要です。

于 2011-03-25T01:09:07.323 に答える