0

以下查询在针对 SQL Server CE 数据库运行 sql 时运行速度非常慢,我曾希望将其转换为 linq for EF。任何人都可以就此提出建议,我还没有在 SQL Server CE 上创建任何索引。表 2 有 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取决于 # of rows in T1)。下一个可能T1.SomeString既是因为它的比较用法,又是因为它被用于排序。

然而,它T2.SomeID取决于数据的构成、每个值的基数、表中有多少行、还有多少其他查询。将完成多少更新与查找等等等等。

于 2012-08-10T23:40:57.677 回答