全て-
したがって、5,600 万行のテーブルがあり、データの挿入とクエリには非常に長い時間がかかります。人々が持っているかもしれない推奨事項に興味があります。
私のサーバーには 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;
エントリとタイプに基づいてクエリを実行し (そこにインデックスがあるのはそのためです)、挿入時に float x、y、z を int に丸めます (float 比較は既に存在する場合は挿入しないより効率的な方法として)高い)。
挿入やクエリを実行するのに時間がかかる理由について、誰か考えはありますか? 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');
前もって感謝します!〜ジョシュ