7
votes

Comment puis-je savoir quelles tables n'ont aucun index dans mysql

Je traite une base de données d'environ 300 tables et je cherche un moyen de trouver toutes les tables qui n'ont aucun index (à l'exclusion du primaire). Idéalement, je voudrais récupérer un ensemble de résultats qui me donne un compte du nombre d'index par table. J'ai essayé cela en utilisant une requête comme celle-ci: xxx

mais il ne renvoie pas de résultats précis. Toute aide serait appréciée


1 commentaires

Êtes-vous sûr que les résultats ne sont pas exacts? J'ai couru cette question sur ma base de données et cela semble être précis pour moi.


5 Réponses :


2
votes

Ceci retournera le nombre d'index pour toutes les tables xxx


1 commentaires

Malheureusement, cela ne révèle pas quelles tables n'ont pas d'index ..Only ceux avec des index



1
votes

Un outil utile pour des situations telles que ceci permet également d'activer le journal de requête lente MySQL. Vous devez l'activer sur my.cnf, mais que seules les requêtes prenant plus de temps que définie la durée sont enregistrées, vous pouvez le laisser allumé même sur les systèmes de production.

Avec cela en place, les requêtes prenant longtemps à répondre sont enregistrées et que vous pouvez voir ce qui les a ralentis.


1 commentaires

Utilisez déjà cela, mais cela ne pointe que des requêtes après le fait. Je cherche vraiment à attraper une partie de ces choses maintenant avant que ce soit un problème.



12
votes

Cela résultera des tables qui n'ont aucun index du tout (pas même la clé principale) xxx


1 commentaires

@James, je sais quel sera votre prochain problème dans ce fil: "hors primaire"



5
votes
select 
    t.table_schema,t.table_name,engine 
from 
    information_schema.tables t 
    inner join information_schema .columns c  
        on t.table_schema=c.table_schema and t.table_name=c.table_name 
group by 
    t.table_schema,t.table_name   
having 
    sum(if(column_key in ('PRI','UNI'), 1,0)) = 0;
This select works but it returns if table is not PRIMARY or Unique

0 commentaires

1
votes

BPGERGO , est sur quelque chose ici.

Et je crois que c'est ce que vous recherchez xxx

Vous n'aurez besoin que de changer votre_database pour obtenir ceci pour fonctionner.


0 commentaires