Précédent   Forum du club des développeurs et IT Pro > Dotnet > Accès aux données > Entity Framework
Entity Framework Forum d'entraide sur le développement avec le modèle d'accès aux données Entity Framework de Microsoft.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 01/07/2012, 00h01   #1
jesuisdaniel
Invité de passage
 
Homme Daniel
Inscription : mai 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : Etats-Unis

Informations forums :
Inscription : mai 2012
Messages : 2
Points : 0
Points : 0
Par défaut Lenteur recherche dans une table

Salut,

Via Entity Framework, Linq, Mysql Connector et une table de 895 402 rows.

Lors d'un simple appel linq:
Code :
var query = from p in db.view_cities where p.INDEXNAME == "BRETE" select p;
Ce code doit me retourner: 3 lignes.
On ne peux plus simple.

Si je regarde le code SQL généré sur la base de donnée MySQL, cela donne:
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SELECT
`Extent1`.`ID`,
`Extent1`.`COUNTRYCODE`,
`Extent1`.`ZIPCODE`,
`Extent1`.`CITY`,
`Extent1`.`STATE`,
`Extent1`.`STATECODE`,
`Extent1`.`ADMINISTATION`,
`Extent1`.`INDEXNAME`
FROM (SELECT
      `tbl_cities`.`ID`,
      `tbl_cities`.`COUNTRYCODE`,
      `tbl_cities`.`ZIPCODE`,
      `tbl_cities`.`CITY`,
      `tbl_cities`.`STATE`,
      `tbl_cities`.`STATECODE`,
      `tbl_cities`.`ADMINISTATION`,
      `tbl_cities`.`INDEXNAME`
      FROM `tbl_cities` AS `tbl_cities`) AS `Extent1`
 WHERE 'BRETE' = `Extent1`.`INDEXNAME`;
avec un temps de 45,22 secs.

Si je lance la requête, mais simplifiée, depuis un client Mysql:
Code :
1
2
3
4
5
6
7
8
9
10
11
SELECT
      `tbl_cities`.`ID`,
      `tbl_cities`.`COUNTRYCODE`,
      `tbl_cities`.`ZIPCODE`,
      `tbl_cities`.`CITY`,
      `tbl_cities`.`STATE`,
      `tbl_cities`.`STATECODE`,
      `tbl_cities`.`ADMINISTATION`,
      `tbl_cities`.`INDEXNAME`
      FROM `tbl_cities` 
      WHERE 'BRETE' = `tbl_cities`.`INDEXNAME`;
0,09 secs.

Quelqu'un a-t-il une explication, je suppose que j'ai raté quelque chose.

Un grand merci pour vos informations,

Daniel
jesuisdaniel est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/07/2012, 18h59   #2
jesuisdaniel
Invité de passage
 
Homme Daniel
Inscription : mai 2012
Messages : 2
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : Etats-Unis

Informations forums :
Inscription : mai 2012
Messages : 2
Points : 0
Points : 0
Si je ne passe pas par une vue, mais par la jointure.
Le requête est bien plus rapide.

Code :
1
2
3
var query = from p in db.tbl_cities
                        join x in db.tbl_countries on p.COUNTRYCODE equals x.ISO
                        where p.INDEXNAME == "BRETE" select p;
Cela est il identique avec SQL server ?
jesuisdaniel est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h12.


 
 
 
 
Partenaires

Hébergement Web