Maison  >  Article  >  base de données  >  Comparaison des index MySQL dans différents environnements de développement et de production

Comparaison des index MySQL dans différents environnements de développement et de production

巴扎黑
巴扎黑original
2017-07-19 17:21:491206parcourir

--1. Créer une table d'informations d'index
créer une table `t_index_update` (
`table_name` varchar(20) COLLATE gbk_bin DEFAULT NULL,
`index_name` varchar(20) COLLATE gbk_bin DEFAULT NULL,
`index_cols` varchar(100) COLLATE gbk_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk COLLATE=gbk_bin;
--2. Insérer dans la table d'informations d'index hors ligne
insérer dans t_index_update().
sélectionnez
table_name,
index_name,
group_concat(distinct concat('`', column_name, '`') ordre par seq_in_index asc separator ', ') comme index_cols
from information_schema.STATISTICS
où table_schema= 'elk'
et nom_colonne<>'seq_id'
et nom_index<>'primary'
regrouper par nom_table, nom_index
ordre par nom_table asc, nom_index asc;
--3. Synchronisez la table d'informations d'index hors ligne avec en ligne
--4. Construisez des instructions de suppression pour les index supprimés et modifiés
select concat('alter table `',a.table_name,' ` drop index ' ,a.index_name,';')
from
(
select
table_name,
index_name,
group_concat(distinct concat('`', column_name, ' `') order par seq_in_index asc separator ', ') comme index_cols
de information_schema.STATISTICS
où table_schema= 'elk'
et column_name<>'seq_id'
et index_name<>'
regrouper par nom_table, nom_index
) a
jointure à gauche t_index_update b sur b.table_name et b.index_name=a.index_name et b.index_cols=a.index_cols
où b.index_name est nul ;
--5. Construisez une nouvelle instruction pour ajouter un nouvel index
select concat('alter table ',a.table_name,'' add index ',a.index_name,'(',a. index_cols,') ;')
à partir de t_index_update une
jointure gauche (
sélectionnez
table_name,
index_name,
group_concat(distinct concat(''', column_name, '`' ) order by seq_in_index asc separator ', ') comme index_cols
de information_schema.STATISTICS
où table_schema= 'elk'
et column_name<>'seq_id'
et index_name<>'primary'
groupe par table_name, index_name
) b sur b.table_name et b.index_name=a.index_name et b.index_cols=a.index_cols
où b.index_name est nul;




Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn