Diferenças de performance entre SSCE 2.0 e 3.1 para a mesma instrução
Ao converter uma aplicação de .NET CF 1.0 com base de dados em SQL CE 2.0 para .NET CF 2.0 com SQL CE 3.1, constatei que uma instrução SQL que demorava poucos segundos, passou a demorar quase 30 segundos a ser executada!
A instrução em causa relacionava 3 tabelas, e estava 'optimizada' para SSCE 2.0, ou seja, em vez de JOINs explícitos, relacionava as tabelas na cláusula WHERE, algo como...
SELECT t1.c1, t1.c2
FROM t1, t2, t3
WHERE t1.c1 = t2.c1 AND t1.c1 = t3.c1
Bastou mudá-la para...
SELECT t1.c1, t1.c2
FROM t1 LEFT JOIN t2 ON t1.c1 = t2.c1 LEFT JOIN t3 ON t2.c1 = t3.c1
...para que de quase 30 segundos passasse a ser executada em menos de 5 segundos!
Quem não utilizou SSCE 2.0, logo à partida escolheria esta segunda instrução, mas para os restantes, ao converterem aplicações em .NET CF 1.0 para .NET CF 2.0 vale a pena reverem as V/ instruções SELECT no sentido de procederem a esta modificação!