同期の目的で、テーブル内の既存のオブジェクトのサブセットを取得しようとしています。SQLクエリが疎なデータセットでタイムアウトする
このテーブルには、2つのフィールド、[Group]
およびMember
があり、いずれも文字化されたGuidです。
すべての行を合わせて、データテーブルに収まるようにすることもできます。私はすでにOutOfMemory
例外が発生しました。しかし、私が今必要としているすべてがデータテーブルにあることを確認する必要があります。だから私はチェックしたいGuids(彼らは1000の塊で来る)を取って、関連するオブジェクトだけを照会します。
ので、代わりにすべての
SELECT * FROM Group_Membership
で一度私のDataTableを埋めるの私は一度千のGUIDの関連オブジェクトを取得するために私のSQLデータベースに対して次のSQLクエリを実行しています:
SELECT *
FROM Group_Membership
WHERE
[Group] IN (@Guid0, @Guid1, @Guid2, @Guid3, @Guid4, @Guid5, ..., @Guid999)
問題のテーブルには合計142個のエントリが含まれ、クエリはすでにタイムアウトしています(CommandTimeout
= 30秒)。まばらに埋まっていない他のテーブルでも、同様のクエリはタイムアウトしません。
SQL Serverのロジックと、正しい方向にどのようにヒントできたかについて、誰かが明言してくれましたか?
すでに非クラスタ化インデックスを列Group
に追加しようとしましたが、それは役に立ちませんでした。
テーブルにIDフィールドを追加して、それを使ってthousadnsでレコードを取得できますか? ..where MyField <1000 – GuidoG