SQL Server CE存在子句性能

时间:2012-08-10 23:29:29

标签: sql entity-framework sql-server-ce

以下查询在针对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

1 个答案:

答案 0 :(得分:1)

仅考虑所提供的信息。

对我而言T2.SomeID将是一个以索引开始的最明显的地方。之后,您可能会查看T2.Field1,因为它在连接中使用(可能T1.Field1,具体取决于T1中的行数)。下一个可能是T1.SomeString,因为它的比较用法,因为它被用于排序。

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