SQL - Réduire temps requête

Fermé
Callie33 Messages postés 139 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 4 novembre 2014 - Modifié par Callie33 le 16/04/2013 à 10:18
blux Messages postés 25966 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 avril 2024 - 16 avril 2013 à 10:50
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

blux Messages postés 25966 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 avril 2024 3 284
16 avril 2013 à 10:29
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
Callie33 Messages postés 139 Date d'inscription jeudi 14 avril 2011 Statut Membre Dernière intervention 4 novembre 2014 8
16 avril 2013 à 10:40
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
blux Messages postés 25966 Date d'inscription dimanche 26 août 2001 Statut Modérateur Dernière intervention 16 avril 2024 3 284
16 avril 2013 à 10:50
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