MySQL性能,这需要几个小时吗?

时间:2016-08-01 20:05:59

标签: mysql mysql-workbench

我在MySQL Workbench中运行以下查询:

UPDATE directorylistings INNER JOIN postcodelatlng ON PostalCode = postcode
set directoryListings.Latitude = postcodelatlng.latitude, directoryListings.Longitude = postcodelatlng.longitude
WHERE PostalCode = postcode;

表目录列表有9000条记录,postcodelatlng有近200万条记录。

目录列表有一个邮政编码(邮政编码)字段,我在邮政编码中查找,以检索和更新目录列表中的纬度和经度字段。

Ater超时问题我发现我应该更改DBMS连接读取超时,我将其设置为36000(10小时)。到目前为止,查询已经运行了5个小时。

我的问题是,这次合理吗?我应该索引什么吗?查询可以优化吗?

我确实制作了postcodelatlng的2记录版本并运行了查询,在0.04秒内正确更改了16行,所以我知道查询至少是可行的。

我已经查看过有关索引和优化的一些问答,但我花了一天时间来实现这一目标,如果再次失败,我想知道采用什么方法跟随。我无法继续尝试并等待失败的时间!我打赌这个查询真的需要几秒钟。我使用的MacBook Pro配备2.5GHz i7,16 GB RAM和ssd驱动器。

非常感谢。

cpu为99%。 12个小时后我流产了!运行show create tables:

CREATE TABLE `postcodelatlng` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `postcode` varchar(8) NOT NULL,
  `latitude` decimal(18,15) NOT NULL,
  `longitude` decimal(18,15) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1734490 DEFAULT CHARSET=latin1

CREATE TABLE `directorylistings` (
  `ID` int(11) NOT NULL AUTO_INCREMENT,
  `Active` tinyint(1) DEFAULT NULL,
  `Tag11` tinyint(1) DEFAULT NULL,
  `Minyan` tinyint(1) DEFAULT NULL,
  `Latitude` double DEFAULT NULL,
  `Longitude` double DEFAULT NULL,
  `AffiliatedDate` double DEFAULT NULL,
  `RegisteredDate` datetime DEFAULT NULL,
  `AccountID` varchar(10) DEFAULT NULL,
  `ShowListing` tinyint(1) DEFAULT NULL,
  `Bloguser` tinyint(1) DEFAULT NULL,
  `Trusted` tinyint(1) DEFAULT NULL,
  `ClassifiedUser` tinyint(1) DEFAULT NULL,
  `HostingID` int(11) DEFAULT NULL,
  `EndDate` double DEFAULT NULL,
  `EndPromoDate` datetime DEFAULT NULL,
  `BaseID` int(11) DEFAULT NULL,
  `Banner` varchar(50) DEFAULT NULL,
  `PrivateListing` tinyint(1) DEFAULT NULL,
  `Reserved1` tinyint(1) DEFAULT NULL,
  `Reserved2` tinyint(1) DEFAULT NULL,
  `Reserved3` tinyint(1) DEFAULT NULL,
  `Reserved4` tinyint(1) DEFAULT NULL,
  `Reserved5` tinyint(1) DEFAULT NULL,
  `CommunityOrg` tinyint(1) DEFAULT NULL,
  `Tag1` tinyint(1) DEFAULT NULL,
  `Tag2` tinyint(1) DEFAULT NULL,
  `Tag3` tinyint(1) DEFAULT NULL,
  `Tag4` tinyint(1) DEFAULT NULL,
  `Tag5` tinyint(1) DEFAULT NULL,
  `Tag6` tinyint(1) DEFAULT NULL,
  `Tag7` tinyint(1) DEFAULT NULL,
  `Tag8` tinyint(1) DEFAULT NULL,
  `Tag9` tinyint(1) DEFAULT NULL,
  `Tag10` tinyint(1) DEFAULT NULL,
  `Tag12` tinyint(1) DEFAULT NULL,
  `Tag13` tinyint(1) DEFAULT NULL,
  `Tag14` tinyint(1) DEFAULT NULL,
  `ShomerShabbos` tinyint(1) DEFAULT NULL,
  `CategoryID1` int(11) DEFAULT NULL,
  `CategoryID2` int(11) DEFAULT NULL,
  `CategoryID3` int(11) DEFAULT NULL,
  `CategoryID4` int(11) DEFAULT NULL,
  `CategoryID5` int(11) DEFAULT NULL,
  `CategoryID6` int(11) DEFAULT NULL,
  `HiddenCategory` int(11) DEFAULT NULL,
  `Company` varchar(100) DEFAULT NULL,
  `Slogan` varchar(250) DEFAULT NULL,
  `Description` varchar(2000) DEFAULT NULL,
  `CharShown` int(11) DEFAULT NULL,
  `Address` varchar(100) DEFAULT NULL,
  `Unit` varchar(50) DEFAULT NULL,
  `Address2` varchar(150) DEFAULT NULL,
  `Streetno` varchar(50) DEFAULT NULL,
  `Building` varchar(50) DEFAULT NULL,
  `Parade` varchar(50) DEFAULT NULL,
  `Locality` varchar(50) DEFAULT NULL,
  `City` varchar(50) DEFAULT NULL,
  `Province` varchar(50) DEFAULT NULL,
  `PostalCode` varchar(10) DEFAULT NULL,
  `Country` varchar(25) DEFAULT NULL,
  `PhoneNumber` varchar(70) DEFAULT NULL,
  `Ext` varchar(25) DEFAULT NULL,
  `PhoneNumber2` varchar(70) DEFAULT NULL,
  `FaxNumber` varchar(30) DEFAULT NULL,
  `CellNumber` varchar(30) DEFAULT NULL,
  `WebUrl` varchar(100) DEFAULT NULL,
  `Email` varchar(75) DEFAULT NULL,
  `Password` varchar(30) DEFAULT NULL,
  `ContactName` varchar(100) DEFAULT NULL,
  `Keywords` varchar(355) DEFAULT NULL,
  `Dcount` int(11) DEFAULT NULL,
  `LocationID` int(11) DEFAULT NULL,
  `Comments` varchar(1500) DEFAULT NULL,
  `ApplicantName` varchar(200) DEFAULT NULL,
  `ApplicantPhone` varchar(200) DEFAULT NULL,
  `ApplicantEmail` varchar(200) DEFAULT NULL,
  `Photo1` varchar(250) DEFAULT NULL,
  `pRating` int(11) DEFAULT NULL,
  `sRating` int(11) DEFAULT NULL,
  `vRating` int(11) DEFAULT NULL,
  `Private` tinyint(1) NOT NULL DEFAULT '0',
  `VeryPrivate` tinyint(1) NOT NULL DEFAULT '0',
  `SemiSecure` tinyint(1) NOT NULL DEFAULT '0',
  `Secure` tinyint(1) NOT NULL DEFAULT '0',
  `Secret` tinyint(1) NOT NULL DEFAULT '0',
  `TrustHigh` tinyint(1) NOT NULL DEFAULT '0',
  `FL` tinyint(1) NOT NULL DEFAULT '1',
  `GJ` tinyint(1) NOT NULL DEFAULT '1',
  `Recommended` tinyint(1) NOT NULL DEFAULT '0',
  `NonGeo` tinyint(1) NOT NULL DEFAULT '0',
  `Edited` datetime DEFAULT NULL,
  `Editor` varchar(40) DEFAULT NULL,
  PRIMARY KEY (`ID`),
  UNIQUE KEY `ID_UNIQUE` (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=27167 DEFAULT CHARSET=utf8

0 个答案:

没有答案