Recherche csv VS recherche mysql

Recherche csv VS recherche mysql - PHP - Programmation

Marsh Posté le 02-01-2005 à 19:12:25    

A votre avis une recherche dans un fichier csv est elle plus ou moins rapide que la même recherche dans une table mysql ?
Il s'agit de fichiers/bases de + de 10000 enregistrements

Reply

Marsh Posté le 02-01-2005 à 19:12:25   

Reply

Marsh Posté le 02-01-2005 à 19:28:58    

Il y a quelques temps j'avais posé plus ou moins la même question que toi (c'était des fichers texte) et on m'avait repondu qu'une requete SQL est toujours plus rapide qu'un acces a un ficher... J'ai pas eu moyen de m'en rendre compte par moi-meme... Je reste interessé à des réponses eventuelles :)

Reply

Marsh Posté le 02-01-2005 à 21:54:38    

théoriquement (ce qui veut dire en théorie), le temps de recherche dans une BDD est nettement moins sensible au nb d'enregistrement que dans un fichier...
 
en gros plus tu as d'info, plus le temps de recherche augmente (de façon plus ou moins proportionnelle) pour un fichier... Une BDD c'est fait pour stocker des données --> ça a été conçu pour rester rapide meme avec un max d'infos...
 
Mais moi non plus je n'ai pas vraiement fait de test poussé la-dessus, MySQL c'est gratuit et se gère très bien avec PHP, donc j'ai tjs opté pour la BDD (vu que pour un stage de fin d'étude j'avais du me mettre au SQL et au BDD access... au moins ça a fini par me servir ;))


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 02-01-2005 à 23:09:59    

C'est ce que je me disais aussi (MySql plus rapide)
Ca me semble logique car les mécanismes des requetes sql doivent être optimisés.  
Ce qui n'est pas forcement le cas de mon script de recherche dans un csv.
A moins d'utiliser des algorithmes de recherche du type dicotomie.
 
Pour l'instant ce que j'ai codé recherche dans un fichier csv puisque c'est sous ce format que sont les données que je dois traiter.
 
Je vais coder une deuxieme version avec recherche dans la base mysql et en utilisant des timestamp je devrais pouvoir déterminer laquelle des deux méthodes est plus rapide.


Message édité par redrat le 02-01-2005 à 23:11:39
Reply

Marsh Posté le 02-01-2005 à 23:33:45    

Ok, surtout fait le nous savoir

Reply

Marsh Posté le 11-01-2005 à 11:17:09    

La version Mysql est faite et comme prévu c'est beaucoup plus rapide. Ca se voit à l'oeil nu.
Je vais ajouter les pointeurs de temps aujourd'hui pour quantifier le gain.

Reply

Marsh Posté le 11-01-2005 à 11:40:53    

merci d'avoir fait le test, meme si le résultat était prévisible, c'est en tout cas rassurant :D
(paske si une "Base De Données" n'était pas ce qu'il y de plus rapide pour stocker et retrouvé des "données", ça m'aurait inquiété...)


---------------
- Xav - ...There are no crimes when there are no laws... -- Xav's World
Reply

Marsh Posté le 11-01-2005 à 13:19:56    

je rajouterais ceci.
Ont perçoit pas forcement la vitesse lorsqu'il y a quelques enrgistrement. Par contre si ont atteind les 100 000 enregistrements la base de données ira bien plus vite que par systeme de fichier. les bd ont des algorythmes optimisé pour les recherches.

Reply

Marsh Posté le 11-01-2005 à 13:31:42    

Faut pas oublier que pour que la BDD soit rapide il faut que les tables soient bien construites, je pense notament aux cles PRIMARY, INDEX et compagnie. Regardez donc la doc mysql pour bien optimiser les tables afin que la recherche y soit des plus rapide et efficace.

Reply

Marsh Posté le 11-01-2005 à 20:07:22    

Voici les temps mesurés sur quelques recherches sachant que les données traitées sont : une table/fichier csv de 39569 enregistrements et une deuxième  table/fichier csv  de 8358 enregistrments
 
Pour chaque recherche, on fait une recherche LDAP et ensuite une recherche dans chacune des deux tables/fichiers csv pour chaque resultat de la requete LDAP
 
Recherche retournant 1 résultat avec 1 recherche ldap + 2 recherches mysql/csv
CSV : 3 sec
SQL : 1 sec
 
Recherche retournant 5 résultats avec 1 recherche ldap + 10 recherches mysql/csv
CSV : 11 sec
SQL : 4 sec
 
Recherche retournant 14 résultats avec 1 recherche ldap + 28 recherches mysql/csv
CSV : 20 sec  
SQL : 8 sec
 
Recherche retournant 48 résultats avec 1 recherche ldap + 96 recherches mysql/csv
CSV : Maximum execution time of 30 seconds exceeded  
SQL : 22 sec
 
Recherche retournant 68 résultats avec 1 recherche ldap + 116 recherches mysql/csv
CSV : Maximum execution time of 30 seconds exceeded  
SQL : 26 sec


Message édité par redrat le 11-01-2005 à 20:10:17
Reply

Marsh Posté le 11-01-2005 à 20:07:22   

Reply

Marsh Posté le 11-01-2005 à 20:33:17    

il y a pas photo le compte est bon :o

Reply

Marsh Posté le 11-01-2005 à 20:46:55    

Avec des index dans la base mysql c'est encore mieux
 
Recherche retournant 1 résultat avec 1 recherche ldap + 2 recherches mysql/csv  
SQL avec INDEX : 0 sec  
SQL sans INDEX : 1 sec  
 
Recherche retournant 5 résultats avec 1 recherche ldap + 10 recherches mysql/csv  
SQL avec INDEX : 1 sec  
SQL sans INDEX : 4 sec  
 
Recherche retournant 14 résultats avec 1 recherche ldap + 28 recherches mysql/csv  
SQL avec INDEX : 2 sec  
SQL sans INDEX : 8 sec  
 
Recherche retournant 48 résultats avec 1 recherche ldap + 96 recherches mysql/csv  
SQL avec INDEX : 7  
SQL sans INDEX : 22 sec  
 
Recherche retournant 68 résultats avec 1 recherche ldap + 116 recherches mysql/csv  
SQL avec INDEX : 9  
SQL sans INDEX : 26 sec

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed