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

MySQLは新しいインデックスの作成に既存のインデックスを使用しますか?

    いいえ、できません。

    理論的には、(site, product, value, id)のインデックス これらのフィールドのサブセットにインデックスを作成するために必要なすべてのものがあります((product, value, id)のインデックスを含む および(value, id)

    ただし、セカンダリインデックスからのインデックスの作成はサポートされていません。

    まず、MySQL 高速フルインデックススキャン(つまり、論理的ではなく物理的な順序でインデックスをスキャンする)をサポートしていないため、インデックスアクセスパスはテーブルの読み取りよりもコストがかかります。これはInnoDBの問題ではありません 、テーブル自体は常にクラスター化されているため。

    次に、これらのインデックスのレコードの順序は完全に異なるため、とにかくレコードを並べ替える必要があります。

    ただし、MySQLでのインデックス作成速度に関する主な問題 現場で注文を生成するということです(レコードを1つずつB-Treeに挿入するだけです。 )事前にソートされたソースを使用する代わりに。 @Danielが述べたように、高速インデックス作成はこの問題を解決します。 5.1のプラグインとして利用できます 5.5にプリインストールされています 。



    1. テーブル、フィールド、スキーマ名を使用して、参照されているテーブル名を検索します

    2. 警告:mysql_num_rows():指定された引数は有効なMySQL結果リソースではありません

    3. mysql部分インデックス、逆インデックス

    4. 簡単なクエリを使用して、CSVなどの他のファイル形式に実際に変換せずにJSONファイルをMySQLデータベースにインポートするにはどうすればよいですか?