2010-01-29 3 views
2

Je fais face à un db que je n'ai pas créé. Je vais émettre un certain nombre de requêtes de longue durée impliquant trois colonnes entières d'une grande table: id (une clé primaire), x et y. (Je ne vais pas en train d'écrire/mise à jour des documents, il suffit de l'émission des requêtes.)est-ce que 'KEY' dans SHOW CREATE TABLE signifie qu'une colonne est indexée?

SHOW CREATE TABLE montre que:

`primary_key` int(11) NOT NULL auto_increment, 
`x` int(11) default NULL, 
`y` int(11) default NULL, 
UNIQUE KEY `id` (`id`), 
KEY `my_x` (`x`), 
KEY `mh_y` (`y`) 

Pour mes fins, dois-je créer des indices sur id, x et y? Ou est-ce que les lignes UNIQUE KEY et KEY signifient que les indices sont déjà présents?

merci!

~ l

Répondre

2

Vous devez créer une clé primaire sur primary_key - car elle est UNIQUE n'est pas la même que PRIMARY. Les deux autres colonnes sont déjà indexées - KEY est la même que INDEX dans ce cas.

Si vous effectuez toujours une recherche à la fois sur x et y, le fait d'avoir une seule clé sur les deux peut améliorer les performances.

1

déjà présent. Utilisez EXPLAIN pour voir ce qu'une requête va faire (perf sage).

Questions connexes