sql >> データベース >  >> RDS >> Mysql

通常のテーブルから一時テーブルにインデックスを渡しますか?

    CREATE TEMPORARY TABLE temp_table LIKE regular_tableを使用できます 、ただし、すべてが作成されます インデックスなので、INSERT INTO temp_table SELECT * FROM regular_tableを実行すると 、インデックスが再構築されます-これには時間がかかる可能性があります。

    または、テーブルを作成して後でインデックスを追加することもできます:

    CREATE TEMPORARY TABLE temp_table
    ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
    INSERT INTO temp_table SELECT * FROM regular_table
    

    ただし、インデックスは挿入のたびに更新されます。

    おそらく最も効率的な方法は、一時テーブルを作成し、すべてを挿入し、後でインデックスを作成することです。

    CREATE TEMPORARY TABLE temp_table
    ALTER TABLE temp_table ADD FULLTEXT INDEX (foo,bar,baz)
    ALTER TABLE temp_table DISABLE KEYS
    INSERT INTO temp_table SELECT * FROM regular_table
    ALTER TABLE temp_table ENABLE KEYS
    

    繰り返しになりますが、最後のALTERステートメントで1つのチャンクで発生することを除いて、インデックスが構築されるのを待つ必要があります。



    1. mysqlプロトコルでの認証はどの程度安全ですか?

    2. 結果の列を複数の列に分割する方法

    3. PHP-mysqlに日付を挿入します

    4. 'where value in ...'句でパラメータを使用する方法は?