が、私はこのテーブルで構成LONGTEXTは
CREATE TABLE `oc_pipeline_logging` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`source` TEXT,
`comments` TEXT,
`data` LONGTEXT,
`query` TEXT,
`date_added` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`ip` VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=MYISAM AUTO_INCREMENT=20 DEFAULT CHARSET=latin1
の下に、私は基本的に私は、コードで取得する場所これまでの私のすべてのエラーを記録してプレーンなフラットテーブルを持っていますクエリが非常に遅くなります。 上記表のdata
の列はlongtext
と定義されていますが、現在、この列には各レコードのほぼ32Mb size
のデータがあります。
これで、プレーンな選択クエリを使用して、結果を取得する時間が大幅に短縮されます。
例えば: -
SELECT * FROM oc_pipeline_logging limit 10
で、実際に私は、エラー
mysql> SELECT COMMENTs,DATA FROM oc_pipeline_logging WHERE id = 18;
ERROR 2020 (HY000): Got packet bigger than 'max_allowed_packet' bytes
の下に取得しています。しかし同じはSQLyogの中で罰金を実行しているが、大量に撮影された端末で上記のクエリを実行していたときに時間の。 このクエリをより高速に実行し、行をすばやくフェッチできますか。
毎回longtext列が必要ですか?それは、必要なときにのみそれを取得するために別のクエリを使用する価値がありますか? –
いいえ、私は毎回それを必要としません。しかし、私は列を必要とするたびに、結果を取得するには遅すぎる。 –
事実、単一のレコードだけをフェッチするのに約3秒かかります。 –