0

次のクエリは、SQL Server CE データベースに対して sql を実行すると非常に遅くなります。EF の linq に変換したいと思っていました。誰でもこれについてアドバイスできますか?私はまだ SQL Server CE にインデックスを作成していません。Table2 には 100,000 行あります。

SELECT 
    *
FROM
    Table1 T1a
WHERE
    EXISTS
(
SELECT
    NULL
FROM
    Table2 T2
        JOIN Table1 T1b ON T2.Field1 = T2.Field1
WHERE
    T2.SomeID = 12345 AND
    T1a.SomeString = T1b.SomeString
)
ORDER BY
    T1a.SomeString,
    T1a.AnotherString
4

1 に答える 1

1

与えられた情報のみを考慮します。

私にとってT2.SomeIDは、インデックスから始めるのが最も明白な場所です。その後T2.Field1、結合で使用されているため (おそらくT1.Field1の行数に応じてT1) を参照することができます。T1.SomeString次のものは、比較の使用と並べ替えで使用されるための両方 になる可能性があります。

ただし、それ以外T2.SomeIDは、データの構成、各値のカーディナリティ、テーブル内の行数、他にいくつのクエリがあるかによって異なります。更新とルックアップの回数などなど

于 2012-08-10T23:40:57.677 に答える