2011-06-20 4 views
0

Nom: Paramètres. Colonnes: id/nom/valeurMySQL - La requête la plus efficace pour obtenir plusieurs paramètres?

Exemple

id/nom/valeur

1/nom_site/Blah

2/root_path/bla

3/quelque chose/Bloh

Quel est le moyen le plus efficace pour s élire un certain nombre de ces paramètres sans les obtenir tous?

+1

Do u oublier d'écrire plus .... mec .. – K6t

+1

Demandez-vous vraiment la clause 'WHERE'? –

+0

Alvaro Je connais la clause WHERE. Je ne savais pas à propos de IN. Ecrire "WHERE name = 'root_path' OU name = 'quelque chose'" etc etc etc semblait très inefficace. – JasonS

Répondre

3

Utilisez un WHERE:

SELECT * FROM `table_name` WHERE id='1' 

OU:

SELECT * FROM `table_name` WHERE name='site_name' 

ou avec un in:

SELECT * FROM `table_name` WHERE name in ('site_name','root_path') 

OU (obtenir seulement id s):

SELECT id FROM `table_name`; 

etcetera etcetera - cela peut continuer avec plusieurs combinaisons.

1
SELECT name,value WHERE name in ('site_name','something') 

Ou si vous connaissez les identifiants.

SELECT name,value WHERE id in (1,3) 
2

Une liste IN(). Cela utilisera effectivement un index sur la colonne name si vous en avez défini un.

select * from `settings` 
WHERE name IN('site_name', 'root_path') 
0

S'il s'agit de simples rangées de 3 colonnes et de réglages, l'efficacité n'est pas vraiment un problème. Je ne peux pas vous voir avoir plus de 10k enregistrements dans ce domaine, et en fait je ne peux vraiment pas vous voir en avoir plus de 100. Le temps de recherche sera très soigné de toute façon. Indexer 'nom' sera probablement le meilleur choix, car je suppose que c'est ce que vous allez interroger.

+0

pas une réponse. oui je sais que tu es nouveau. mais lisez la [FAQ] (http://stackoverflow.com/faq). – Neal

Questions connexes