在查询大约500.000行表analisi_campo_free和6行表campo_free需要大约10秒, 这对我来说是一个问题,有没有办法对其进行优化?
SELECT acf.ID_ANALISI,
max( if(cf.posizione = 1, acf.valore, NULL) ) as campo_free_1,
max( if(cf.posizione = 2, acf.valore, NULL) ) as campo_free_2,
max( if(cf.posizione = 3, acf.valore, NULL) ) as campo_free_3,
max( if(cf.posizione = 4, acf.valore, NULL) ) as campo_free_4,
max( if(cf.posizione = 5, acf.valore, NULL) ) as campo_free_5,
max( if(cf.posizione = 6, acf.valore, NULL) ) as campo_free_6
FROM analisi_campo_free acf
inner JOIN campo_free cf ON acf.ID_CAMPO_FREE = cf.ID_CAMPO_FREE
GROUP BY acf.ID_ANALISI;
这是解释:
id select_type table partitions type possible_keys key key_len ref rows filtered Extra
1 SIMPLE acf ALL ID_ANALISI,FK_ANALISI_CAMPO_FREE_CAMPO_FREE 514271 100 Using temporary; Using filesort
1 SIMPLE cf eq_ref PRIMARY PRIMARY 1 elettroforesi.acf.ID_CAMPO_FREE 1 100
以及这些表定义:
// ANALISI_CAMPO_FREE
CREATE TABLE ANALISI_CAMPO_FREE
(
ID_ANALISI_CAMPO_FREE INT UNSIGNED NOT NULL AUTO_INCREMENT,
ID_ANALISI INT UNSIGNED NOT NULL,
ID_CAMPO_FREE TINYINT UNSIGNED NOT NULL,
VALORE VARCHAR(45),
PRIMARY KEY(ID_ANALISI_CAMPO_FREE),
INDEX IDX_ID_ANALISI (ID_ANALISI),
CONSTRAINT FK_ANALISI_CAMPO_FREE_ANALISI FOREIGN KEY (ID_ANALISI) REFERENCES ANALISI (ID_ANALISI),
CONSTRAINT FK_ANALISI_CAMPO_FREE_CAMPO_FREE FOREIGN KEY (ID_CAMPO_FREE) REFERENCES CAMPO_FREE (ID_CAMPO_FREE)
)
ENGINE=InnoDB;
// CAMPO_FREE
CREATE TABLE CAMPO_FREE
(
ID_CAMPO_FREE TINYINT UNSIGNED NOT NULL AUTO_INCREMENT,
ID_LABORATORIO TINYINT UNSIGNED NOT NULL,
POSIZIONE TINYINT UNSIGNED NOT NULL,
DESCRIZIONE VARCHAR(30) NOT NULL UNIQUE,
UTILIZZATO BIT DEFAULT 0,
PRIMARY KEY(ID_CAMPO_FREE),
UNIQUE (ID_LABORATORIO, POSIZIONE, UTILIZZATO),
CONSTRAINT FK_CAMPO_FREE_LABORATORIO FOREIGN KEY (ID_LABORATORIO) REFERENCES LABORATORIO(ID_LABORATORIO)
)
ENGINE=InnoDB;
Table Non_unique Key_name Seq_in_index Column_name Collation Cardinality Sub_part Packed Null Index_type Comment Index_comment
analisi_campo_free 0 PRIMARY 1 ID_ANALISI_CAMPO_FREE A 419292 BTREE
analisi_campo_free 1 IDX_ID_ANALISI 1 ID_ANALISI A 419351 BTREE
analisi_campo_free 1 FK_ANALISI_CAMPO_FREE_CAMPO_FREE 1 ID_CAMPO_FREE A 1 BTREE
感谢您的帮助