2013-07-30 3 views
0

travail j'ai 4 tables:requête multi-tables SQL lente

bag_of_words(
    ch_id, 
    frequency, 
    number,w_id 
) 

clinical_history(
    ch_complete, 
    ch_id,p_id 
) 

patients(
    p_id, 
    p_name 
) 

words(
    w_id, 
    w_word 
) 

et j'ai une liste de mots sélectionnés. Je dois choisir parmi les tables w_word, p_name, number, freqency, et ch_id.

J'ai cette requête, mais il est lent et j'ai besoin pour être plus rapide

SELECT 
    w_word, 
    p_name, 
    number, 
    frequency, 
    bag_of_words.ch_id 
FROM 
    bag_of_words 
LEFT JOIN 
    words 
ON 
    words.w_id=bag_of_words.w_id 
LEFT JOIN 
    clinical_history 
ON 
    bag_of_words.ch_id=clinical_history.ch_id 
LEFT JOIN 
    patients 
ON 
    patients.p_id=clinical_history.p_id 
WHERE 
    words.w_word IN (',,,,,') 
+0

Je pense que sans rejoindre, cela fonctionnera rapidement mais je ne pouvais pas trouver un moyen. – user2605046

+1

Utilisez le concept d'index –

Répondre

0

Vous pouvez utiliser des vues pour améliorer les performances des requêtes. (Vérifier: Views). Au fait, utilisez-vous des index? Les index augmentent également les performances.

+0

non je n'utilise pas d'index, je vais l'essayer. – user2605046

+0

index augmentera vos performances. Et aussi vérifier les vues. Créer des vues augmentera les performances – cihanblog

+0

Y at-il un moyen de faire une requête sans jointure – user2605046

0

Essayez de mettre un index sur w_word, et en vous assurant toutes les colonnes que vous joindre à des index.

Si vous obtenez toujours des requêtes très lentes, essayez d'éliminer les jointures pour déterminer quelle partie de la requête provoque le ralentissement. Alors concentrez-vous sur l'optimisation de cela.

De nombreux outils peuvent être utilisés pour analyser des requêtes individuelles et voir ce qui doit être fait pour les accélérer.

+0

pouvez-vous recommander un outil? – user2605046

+0

@ user2605046 Je ne l'ai pas utilisé, mais je pense que http://www.mysql.com/products/enterprise/query.html est censé aider avec – evilbhonda