Séparer une table MySQL

WRInaute passionné
Bonjour
Voila, je vais essayer d'expliquer mon problème:
J'ai un site avec une table de plusieurs milliers de lignes, chiffre qui augmente en pernanence évidement.

Dans cette table, j'ai des noms d'endroit du monde classé par continent, pays, villes et lieux.

Donc sur mon site quand quelqu'un ouvre une page sur la tour eifel par example il y a une recheche qui se fait sur toute la table, tous les continents, tous les pays etc...

Donc y a t-il moyen de faire en sorte que comme la toue eifel est dans Paris, de faire un recherche QUE dans le pays france par exemple, que la recherche se passe que dans les lignes appartenant à la catégorie france, ou europe.

De façon à soulager le nombre de requêtes.

Merci, si il y a une doc qqpart
 
WRInaute discret
Pourquoi ne fais-tu pas , en fonction de tes champs, une requête du type :

SELECT * FROM ma_table WHERE $_POST['Pays'] = 'France'

Ou quelque chose de similaire en fonction de ton type de données (POST, GET, ...)
 
WRInaute passionné
oui

Oui ça c'est fait.
Mais le programme est quand meme obligé de chercher parmis plusieurs milliers de ligne.

Il m'a semblé entendu dire qu'il y avais un moyen de séparer ça, je en suis pas sur et je ne sais pas comment!

C'est à dire limiter la recherche parmis moins de lignes...

Merci
 
WRInaute discret
Je crois que tu fais allusion aux index ...

Effectivement, ils permettent sur des grosses bases de diminuer le temps de recherche.

Utilise la commande CREATE INDEX.
 
WRInaute impliqué
Normalement tu as des index sur tes champs continents, pays et villes. Normalement le type de ces champs sont des entiers. Donc en partant de là tu as déjà optimisé l'essentiel de ton modèle de données.

Normalement avec des requêtes simples, cela devrait être rapide même avec quelques milliers de villes.

Un sgbd est fait pour recherches dans des milliers de lignes, pas uniquement dans 10 lignes.
 
WRInaute passionné
ok

OK, merci, en fait je pense que je suis bien optimisé.

J'ai un VPS au USA et régulièrement ma base était HS et je devais redémarrer le service :(

J'ai contacté le service client et en fait le max authorisé était 100 personnes en même temps sur la base, ils m'ont augmenté à 150, ça va pour l'instant, je vais voir :)
 
WRInaute discret
comme on l'a dit, il faut bien vérifier les index et les poser au bon endroit
j'ai, pour mon taf, une table avec plus d'un millions de lignes et ca tourne nickel
 
Discussions similaires
Haut