2016-07-02 17 views
-1

私は、数百万のレコードテーブルのすべてのエントリに3つの値を追加する必要のあるポストプロセスアプリケーションを持っています。プロセスは15分ごとに実行され、このテーブルの各行に3つの値を追加する必要があります。このテーブルに3つのカラムを追加するか(更新する)、それに外部キーを持つ新しいテーブルを作成する(挿入する)方が良いでしょうか?列の追加VS新しいテーブルの外部キー

EDIT: 思想、これは、より一般的な質問でしたが、リクエストあたり:

CREATE TABLE `position` (
`idPosition` int(10) unsigned NOT NULL AUTO_INCREMENT, 
`idRover` int(10) unsigned DEFAULT NULL, 
`TimeHack` datetime NOT NULL DEFAULT '1970-01-01 00:00:00', 
`Milliseconds` smallint(4) unsigned NOT NULL DEFAULT '0', 
`n` double NOT NULL DEFAULT '0', 
`e` double NOT NULL DEFAULT '0', 
`z` double NOT NULL DEFAULT '0', 
`nx` double DEFAULT '0', 
`ny` double DEFAULT '0', 
`nz` double DEFAULT '1', 
`valid` tinyint(1) DEFAULT '0', 
`Reverse` tinyint(1) NOT NULL DEFAULT '0', 
`Azimuth` double DEFAULT '0', 
`cutfill` double DEFAULT NULL, 
PRIMARY KEY (`idPosition`), 
UNIQUE KEY `positionrovertime` (`idRover`,`valid`,`TimeHack`,`Milliseconds`), 
KEY `fkPositionidRover` (`idRover`), 
CONSTRAINT `fkPositionidRover` FOREIGN KEY (`idRover`) REFERENCES `rover` (`idRover`) ON DELETE CASCADE 
) ENGINE=InnoDB AUTO_INCREMENT=574050 DEFAULT CHARSET=latin1; 

ない私のデザイン、私が一緒に動作するようになっただけで何。私はWTFの束があることを知っています。このテーブルのPKに、2倍の3列またはPKとFKの4列の新しいテーブルを追加する必要があります。

+0

「SHOW CREATE TABLE」。あなたの仮の質問を教えてください。 –

答えて

0

これはあなたの要件に依存し、公式ガイドラインでチェックすることができますが、数百万のレコードを持つテーブルを変更するのは簡単な作業ではありませんので、実際に同じテーブルに追加したい場合は、古いテーブルから新しいテーブルにすべてのデータをロードします。古いテーブルを削除し、新しいテーブルの名前を古いテーブル名に変更します。

別のテーブルに追加する場合は、常にその2つのテーブルを結合する必要があります。その場合、他のテーブルに外部キーを追加できますが、変更することはできません簡単な作業。

+0

以前に列を追加しました。ちょっと時間がかかりますが、300万回のエントリーはそれほど悪くありませんでした。何が前例のために良いです。挿入は更新と同じくらい速いですか?プライマリIDの外部キーは、選択された列と同じスピードですか? – LrakWortep

関連する問題