更新查询MySql太慢(Localhost)

时间:2017-09-23 06:37:21

标签: mysql sql-update query-optimization

我在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;

有什么建议吗? 谢谢

2 个答案:

答案 0 :(得分:0)

@ento对于您提出的问题,请发布当前的信息 显示来自clienti的指数; 在你原来的问题中。

此时我没有看到关于此表的主要密钥或列抄本的适当索引的证据。任何WHERE都应该有某种形式的前导索引。

答案 1 :(得分:0)

对于记录,上面评论中猜到的解决方案是长时间运行的SELECT查询阻止了对表的更新。

这就是你不应该使用MyISAM的原因。当您使用MyISAM时,读者会阻止编写者。