2016-05-31 3 views
1

が、私はこのテーブルで構成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の中で罰金を実行しているが、大量に撮影された端末で上記のクエリを実行していたときに時間の。 このクエリをより高速に実行し、行をすばやくフェッチできますか。

+0

毎回longtext列が必要ですか?それは、必要なときにのみそれを取得するために別のクエリを使用する価値がありますか? –

+0

いいえ、私は毎回それを必要としません。しかし、私は列を必要とするたびに、結果を取得するには遅すぎる。 –

+0

事実、単一のレコードだけをフェッチするのに約3秒かかります。 –

答えて

0

私はこの種のエラーを取得する私の最後に同じことを試みています。 しかし、my.iniにメモリ制限を増やす方法があります。

max_allowed_packet=2048M 

あなたはそれに応じて制限を変更することができますが、これは問題を解決することを願っています。

+1

こんにちは私はすでにこれを試しましたが、私の選択をスピードアップするという私の問題を解決しています。あなたの応答を感謝します。 –

関連する問題