Heim  >  Artikel  >  Datenbank  >  Vergleich von MySQL-Indizes in verschiedenen Entwicklungs- und Produktionsumgebungen

Vergleich von MySQL-Indizes in verschiedenen Entwicklungs- und Produktionsumgebungen

巴扎黑
巴扎黑Original
2017-07-19 17:21:491206Durchsuche

--1. Indexinformationstabelle erstellen
Tabelle `t_index_update` erstellen (
`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. In Offline-Indexinformationstabelle einfügen
in t_index_update() einfügen
wählen Sie
table_name,
index_name,
group_concat(distinct concat(''', columns_name, ''' order by seq_in_index asc Separator ', ') as index_cols
from information_schema.STATISTICS aus
wobei table_schema= 'elk'
und Spaltenname<>'seq_id'
und index_name<>'primary'
gruppieren nach Tabellenname, Indexname
Reihenfolge nach Tabellenname aufsteigend, Indexname aufsteigend;
--3. Offline-Indexinformationstabelle mit Online synchronisieren
--4. Löschanweisungen für gelöschte und geänderte Indizes erstellen
select concat('alter table `',a.table_name,' `drop index ' ,a.index_name,';')
from
(
select
table_name,
index_name,
group_concat(distinct concat(''', columns_name, ' `') order durch seq_in_index asc-Trennzeichen ', ') als index_cols
aus information_schema.STATISTICS
, wobei table_schema= 'elk'
und Column_name<>'seq_id'
und index_name<>' Primary' gruppieren nach Tabellenname, Indexname
) a
Linksverknüpfung t_index_update b auf b.table_name und b.index_name=a.index_name und b.index_cols=a.index_cols
wobei b.index_name null ist;
--5. Erstellen Sie eine neue Anweisung, um einen neuen Index hinzuzufügen
select concat('alter table `',a.table_name,'' add index ',a.index_name,'(',a. index_cols,') ;')
from t_index_update a
left join (
select
table_name,
index_name,
group_concat(distinct concat(''', columns_name, ''' ) order by seq_in_index asc-Trennzeichen ', ') als index_cols
aus information_schema.STATISTICS
, wobei table_schema= 'elk'
und columns_name<>'seq_id'
und index_name<>'primary'
group nach Tabellenname, Indexname
) b auf b.table_name und b.index_name=a.index_name und b.index_cols=a.index_cols
wobei b.index_name null ist;





Das obige ist der detaillierte Inhalt vonVergleich von MySQL-Indizes in verschiedenen Entwicklungs- und Produktionsumgebungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn