15万行を超えるテーブルがあります。表の1つの列には、「テキスト」タイプがあります。このフィールドには、5万文字を超えるテキストが含まれています。つまり、その列に5万文字を超える15万ブロックのテキストが格納されているということです。
テキストは、さまざまなWebページのHTMLソースです。そのため、改行を保持する必要があるため、varcharタイプを使用できません。
この列が選択されている場所またはWHERE句でクエリを実行する場合、クエリは非常に遅く、完了するまでに永遠に時間がかかります。
たとえば、次で始まる単純なクエリを実行します。
SELECT my_text_column FROM my_table LIMIT 1000
30秒以上かかります。テーブルの1/150で30秒、それは本当に悪いことです。
この列にINDEXを追加しようとしましたが、テキストタイプの列にINDEXを追加できないようです。
この列を最適化し、すべてのクエリが高速になるようにするにはどうすればよいですか?
編集:
完全なテーブル構造は次のとおりです。
CREATE TABLE IF NOT EXISTS `my_table` (
`url_id` int(10) NOT NULL AUTO_INCREMENT,
`url` varchar(500) NOT NULL,
`source` text NOT NULL,
`completed` tinyint(4) NOT NULL DEFAULT '0',
PRIMARY KEY (`url_id`),
KEY `completed` (`completed`),
KEY `url` (`url`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=150775 ;