1

私は大きなMySQL写真テーブルを持っており、フルテキストインデックス、通常のインデックス、およびその他のパフォーマンストリックを使用しても、クエリが少し遅くなっていることに気付きました(ひどいMySQLフルテキスト)。

2つのフィールドがあります。1つは「caption」、もう1つは「shortCaption」です。'caption'フィールドには、長さが150〜2000文字の500,000行のデータが含まれ、新しい'shortCaption'フィールドは空です。

'caption'フィールド内の検索可能な情報は、ほとんどが最初の300文字であるため、フルテキストクエリを高速化するために、最初の300文字のみを含む'shortCaption'フィールドを作成して、DBの作業を減らします。 /query。

1つのクエリで、各写真レコードを反復処理し、最初の300文字(length(field、300))を取得して、新しいフィールドを短いバージョンで更新する方法はありますか?これを処理する小さなサーバーサイドスクリプトを作成しようとしていましたが、SQLを使用した方が高速であるため、純粋に実行できるかどうかを知りたいと思っています。

前もって感謝します。

4

3 に答える 3

3
UPDATE tablename SET newfield = LEFT(oldfield, 300)

このクエリは、のすべての行を更新しますtablename

于 2012-04-17T00:36:29.417 に答える
1

このようなことを試すことができます:

UPDATE table
SET new_column = left(old_column, 300);

テストテーブルの1つに対してテストを実行しましたが、機能しました。クエリが500K行を超える実行には時間がかかることを知っておいてください。

于 2012-04-17T00:37:17.820 に答える
1
UPDATE table1
SET column1 = LEFT( column2, 300 ) 
于 2012-04-17T00:42:31.267 に答える