我在Mac上有一个带有localhost服务器的表。 该表有大约2500行。问题是,SELECT查询足够快,但UPDATE / INSERT查询大约需要40秒!!
例如,简单查询:
UPDATE clienti SET email = 'my_noemail1427@noemail.it1'
, telefono = '348/51560931'
, ragsoc = 'Tomaselli Grandi Impianti 1S.r.l.'
WHERE codice = 'C00518'
需要44秒!
结构如下:
CREATE TABLE `clienti` (
`codice` varchar(6) NOT NULL,
`cap` varchar(10) DEFAULT NULL,
`ragsoc` varchar(100) DEFAULT NULL,
`email` varchar(254) DEFAULT NULL,
`indirizzo` varchar(100) DEFAULT NULL,
`localita` varchar(30) DEFAULT NULL,
`prov` varchar(5) DEFAULT NULL,
`partitaiva` varchar(11) DEFAULT NULL,
`codfiscale` varchar(16) DEFAULT NULL,
`telefono` varchar(20) DEFAULT NULL,
`targa` varchar(20) DEFAULT NULL,
`modello` varchar(20) DEFAULT NULL,
`pass` varchar(20) DEFAULT NULL COMMENT 'Contiene la password:LASCIARE VUOTA, la inserisco io ',
`inserito_in_AC` varchar(5) DEFAULT 'no' COMMENT 'si, no. Se l''ho già importato',
`datains` date DEFAULT NULL COMMENT 'la data di inserimento del cliente nel DB',
`space` varchar(1) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
有什么建议吗? 谢谢
答案 0 :(得分:0)
@ento对于您提出的问题,请发布当前的信息 显示来自clienti的指数; 在你原来的问题中。
此时我没有看到关于此表的主要密钥或列抄本的适当索引的证据。任何WHERE都应该有某种形式的前导索引。
答案 1 :(得分:0)
对于记录,上面评论中猜到的解决方案是长时间运行的SELECT查询阻止了对表的更新。
这就是你不应该使用MyISAM的原因。当您使用MyISAM时,读者会阻止编写者。