Précédent   Forum des professionnels en informatique > Bases de données > Décisions SGBD
Décisions SGBD Forum de décisions sur le choix en bases de données. Le Comparatif
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/05/2011, 13h55   #1
Invité de passage
 
Inscription : décembre 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 10
Points : 2
Points : 2
Par défaut Recherche sgbd pour comparatif 2 listes

Bonjour,

Je suis à la recherche de conseils pour le choix d'un SGBD.

J'ai une table avec 3 colonnes INT: id/user/link

Et je veux faire une recherche de ce type

Code :
SELECT * FROM TABLE WHERE user IN (list1) AND link IN (list2)
list1 et list2 peuvent contenir jusqu'à 10000 INT.

Mon problème c'est que lorsque je fais une recherche avec 10000 INT dans chaque liste et une dizaine de millions de ligne dans la table, la recherche prend plusieurs dizaine de seconde.

Pour le moment j'ai fais des tests avec Mysql, Mongodb, Sphinxsearch, Solr.

Solr et sphinx sont les plus rapides avec environ entre 10 et 15 sec. Mais c'est pour un site internet donc il me faudrait quelques de beaucoup beaucoup plus rapide.

Donc si vous avez une meilleure solution je suis preneur.

Merci
alsab est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2011, 10h48   #2
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 953
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 953
Points : 17 773
Points : 17 773
Si vous voulez de réelles performances, il faut avant tout mettre les moyens sur la RAM de votre serveur et avoir des SGBDR qui soient performant naturellement sur de gros volumes comme Oracle ou SQL Server.
Autre chose important, vous irez sans doute plus vite en chargeant vos liste 1 et 2 dans des tables relationnelles et en les indexant puis en faisant la requête suivante :
Code :
1
2
3
4
SELECT MesColonne --évitez le "étoile"
FROM   MaTable AS T
       INNER JOIN T_LISTE_1 AS L1 ON T.user = L1.user
       INNER JOIN T_LISTE_2 AS L2 ON T.user = L2.user
Globalement le temps de chargement, d'indexation et de la requête devrait tomber à 1 ou 2 secondes...

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 15/05/2011, 18h31   #3
Invité de passage
 
Inscription : décembre 2010
Messages : 10
Détails du profil
Informations forums :
Inscription : décembre 2010
Messages : 10
Points : 2
Points : 2
Merci pour le conseil.

Je vais tester ça.
alsab est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h27.


 
 
 
 
Partenaires

Hébergement Web