Rechercher : dans
Par :

Optimisation mysql

Dernière réponse le 24 aoû 2005 à 11:57:16 BA, le 4 jui 2003 à 22:04:22 
 Signaler ce message aux modérateurs

Bonsoir,

J'ai un petit problème de base de données :

Voici une requête sous mysql qui marche bien sur des tables de petite taille (1000 lignes), mais qui bloque tout dès qu’il s’agit d’une table de 50 000 lignes, par exemple.
J'ai une table contenant des temps, et je veux calculer des durées (différence entre deux temps successifs).

create table duréesTemp
select T1.date, round(T2.temps-T1.temps,3) as durée, T1.IP
from tabDeLogTemp T1, tabDeLogTemp T2
where T1.date=T2.date and T1.IP=T2.IP and T2.indice=T1.indice+1;

C’est logique, parce que la jointure des deux tables produit une table énorme. Mais je ne vois pas du tout comment améliorer ma requête, surtout que je n’ai que des notions minimales en SQL.

Merci d’avance.

Meilleures réponses pour « Optimisation mysql » dans :
MySQL – Optimisation Voir L’optimisation au niveau de MySQL passe par trois composants, à savoir : Optimisation du serveur MySQL Optimisation de la base de données Optimisation des requêtes Optimisation de la configuration de serveur MySQL L’optimisation du serveur peut...
Importer et exporter des données sous MySQL Voir Importation et exportation Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...
Installation rapide de LAMP (Apache+MySql+php) sous Linux VoirLAMP = Linux+Apache+MySql+Php. C'est le serveur web par excellence. L'ensemble est facile à installer. Installation rapide sudo aptitude install apache2 php5 mysql-server php5-mysql libapache2-mod-php5 Le mot de passe administrateur mySQL...
Réinitialiser le mot de passe root de MySQL VoirQue ce soit lors de la première installation ou après la perte du mot de passe principal de MySQL, il est nécessaire de pouvoir modifier le mot de passe administrateur (root) de MySQL. Vous avez perdu le mot de passe root de MySQL ? Pour pouvoir...
Sauvegarde restauration base de données Mysql VoirL'article suivant va présenter la manière la plus facile pour sauvegarder et restaurer les bases de données Mysql. Sauvegarde Pour sauvegarder une base de données existante il est conseillé de créer un dump. Pour dumper toutes les bases de...
MySQL - Installation sous Windows VoirPrésentation de MySQL MySQL est un Système de Gestion de Bases de Données (SGBD) fonctionnant sous Linux et Windows. Depuis la version 3.23.19, MySQL est sous Licence GPL (aussi bien sous Linux que Windows), ce qui signifie qu'il peut être utilisé...
Administration de MySQL VoirLa base de données mysql Les Système de Gestion de Bases de Données tels que MySQL permettent de manipuler facilement et avec beaucoup de souplesse un très important volume de données. Toutefois, aussi robuste soit MySQL, il peut être intéressant...

1

 Karhaix, le 24 aoû 2005 à 11:57:16

Salut,

Je tombe par hasard sur ta question et comme ça fait deux jours que je cherche à comprendre comment on optimise mySQL et les requêtes, je me permets de répondre ce que j'ai appris :
=> exécute un EXPLAIN ta_requête dans ton mysql, il va te répondre un tableau intéressant sur les bases accédées pour répondre à ta requête. En clair, regarde la colonne "Rows", le produit de tous les nombres est le nombre de ligne que ta requête fait lire à la BD... le problème est surement là (puisqu'il est visible avec 50000 lignes et pas 1000).
=> cela va signifier qu'il va falloir créer des index bien sentis pour aider la BD à répondre à la requête. Pour ça, regarde bien la colonne "Type" et si le résultat est ALL pour une ligne, c'est qu'il peut manquer un index dans cette table (surtout si en plus, la colonne row indique un grand nombre de lignes retournées).

Au besoin, étudie ceci : http://www.nexen.net/docs/mysql/annotee/explain.php?lien=explain

Qui explique bien les résultats de EXPLAIN.

Voilà, j'espère t'avoir aidé.

Karhaix

Répondre à Karhaix