+ Répondre à la discussion
Affichage des résultats 1 à 2 sur 2
  1. #1
    Invité de passage
    Homme Profil pro
    Inscrit en
    mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    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

  2. #2
    Invité de passage
    Homme Profil pro
    Inscrit en
    mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Etats-Unis

    Informations forums :
    Inscription : mai 2012
    Messages : 2
    Points : 0
    Points
    0

    Par défaut

    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 ?

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •