2010-11-23 3 views
0

J'ai une table appelée TABLE1 qui a 5 colonnes que j'utilise rarement et dont le design doit être séparé de cette table. Par conséquent, j'ai créé une nouvelle table appelée TABLE-REF où sa clé primaire (appelée refID) est en réalité l'ID des colonnes correspondantes dans TABLE1. De cette façon, j'ai séparé ces 5 colonnes de ma table principale. Je n'ai pas utilisé de clé étrangère depuis que j'utilise MyISAM.Fonctionnalité de la clé étrangère MyISAM

Dans les rares occasions où j'ai besoin de sélectionner ces 5 colonnes pour les lignes dans TABLE1, quelle sera la manière la plus efficace de les sélectionner?

SELECT * FROM TABLE-REF WHERE refID={$table1ID} 

côté indexation de la colonne refID, est-il une autre amélioration que je peux faire pour améliorer la complexité de la requête?

+0

Existe-t-il d'autres clauses where? – vinothkr

+0

Nope .. J'ai l'ID TABLE1 dans ma main, juste besoin d'aller chercher la ligne correspondante de TABLE-REF (c'est-à-dire refID = {$ id_from_table1}) – Joel

+0

Ensuite, laissez-le tel quel. Comme mysql va quand même aller chercher toutes les lignes. – vinothkr

Répondre

0

Vous pouvez obtenir les deux lignes comme une seule si vous utilisez une jointure. donc plus de retour à la base de données pour chaque ligne dans TABLE pour obtenir la ligne TABLE-REF.

SELECT 
    T.*, R.* 
FROM `TABLE` T 
INNER JOIN `TABLE-REF` R ON R.refID = T.ID 
WHERE <your conditions>