全部-
所以我有一个有 5600 万行的表,插入数据和查询它需要很长时间。我很好奇人们可能提出的任何建议。
我的服务器有 32GB 的 RAM(大部分未使用)、2X RAID SSD 和 E3-1270,所以它应该很快。
然而,一些选择查询需要超过 40 秒。我基本上在游戏世界中存储对象的位置。这是结构:
CREATE TABLE IF NOT EXISTS `object_positions2` (
`entry` mediumint(9) NOT NULL,
`type` tinyint(4) NOT NULL,
`x_int` int(11) NOT NULL,
`y_int` int(11) NOT NULL,
`z_int` int(11) NOT NULL,
`x` float NOT NULL,
`y` float NOT NULL,
`z` float NOT NULL,
`continent` smallint(6) NOT NULL,
`zone` smallint(6) NOT NULL,
`build` float NOT NULL,
PRIMARY KEY (`entry`,`type`,`x_int`,`y_int`,`z_int`),
KEY `entry` (`entry`,`type`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
我根据条目和类型进行查询(这就是为什么那里有一个索引),并且我在插入时将浮点 x,y,z 舍入为一个 int(如果它已经存在,作为一种更有效的不插入方法,因为浮点比较是昂贵的)。
有没有人知道为什么插入甚至查询需要这么长时间?MySQL 不支持这么多行吗?
这是示例插入语句:
REPLACE INTO `object_positions2` (`entry` ,`type` , `x_int` , `y_int` , `z_int`, `x` ,`y` ,`z` ,`continent` ,`zone` ,`build`) VALUES ('$entry', '$type', '" . round($x) . "', '" . round($y) . "', '" . round($z) . "', '$x', '$y', '$z', '$continent', '$zone', '$ZeBuild');
提前致谢!〜乔什