SQL - Réduire temps requête

Callie33 Messages postés 150 Statut Membre -  
blux Messages postés 5036 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Voici un échantillon de la table "eod" que j'utilise :

| eod_id | company_symbol |    date    | open  | close | high  |  low  | 
|      1 |            AAA | 01-01-2000 | 40.00 | 42.00 | 43.00 | 39.00 |


La table contient environ 1.5M de lignes.

J'effectue les trois requêtes suivantes :
SELECT COUNT(*) FROM eod WHERE company_symbol="AAA" AND CLOSE>OPEN 
AND DATE BETWEEN "0000-00-00" AND "0000-00-00;

SELECT COUNT(*) FROM eod WHERE company_symbol="AAA" AND CLOSE<OPEN 
AND DATE BETWEEN "0000-00-00" AND "0000-00-00;

SELECT min(date), max(date) FROM eod WHERE company_symbol="AAA"


Chacune d'elle prend environ 0,7 sec, et j'aimerais réduire sensiblement ce temps.
Comment optimiser mes requêtes ou la recherche ? Est-il possible de faire les 2 premières requêtes en une seule?

Merci pour votre aide,

Callie

2 réponses

  1. blux Messages postés 5036 Date d'inscription   Statut Modérateur Dernière intervention   3 455
     
    Salut,

    - quel SGBD ?
    - peux-tu faire un EXPLAIN de ta requête ?
    - quels champs sont indexés ?

    Pour les deux premières tu peux les faire en même temps en modifiant le test sur OPEN/CLOSE pour ne garder que les résultats non identiques.
    0
  2. Callie33 Messages postés 150 Statut Membre 8
     
    Bonjour,
    Merci pour ta réponse. Alors :
    - J'utilise MySQL

    - Explain pour la 1 :
    select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
    SIMPLE | eod | ALL | eod_date_close | NULL | NULL | NULL | 1544440 | Using where

    - Explain pour la 3 :
    select_type | table | type | possible_keys | key | key_len | ref | rows | Extra
    SIMPLE | eod | ALL | ALL | NULL | NULL | NULL | 1487357 | Using where

    - Index : eod_date_close on eod(date, close)
    0
    1. blux Messages postés 5036 Date d'inscription   Statut Modérateur Dernière intervention   3 455
       
      Les champs renvoyés par l'explain ne sont pas ceux que tu indiques au début...

      Sinon, mets des indexes sur company_symbol et sur date, il est possible que cela ralentisse fortement les mises à jour de cette table, il faut voir cependant ce que tu es prêt à accepter...
      0