ブログ投稿に関する明確化
あなたが基本的に見ている機能はですfast index creation
。この機能により、InnoDB テーブルへのセカンダリ インデックスの作成が高速化されますが、非常に特殊な場合にのみ使用されます。たとえば、この機能は while では使用されないため、最初にインデックスを削除してから実行し、次にインデックスを再作成するOPTIMIZE TABLE
ことで劇的に高速化できます(これについては、リンクした投稿でした)。OPTIMIZE TABLE
fast index creation
上記のようにこの機能を手動で使用することで改善できる、ケースのある種の自動化が、という名前のシステム変数としてPercona Server に追加されましたexpand_fast_index_creation
。OPTIMIZE TABLE
アクティブ化されている場合、サーバーは非常に特定のケースだけでなく、リンクされたブログ記事で言及されている問題など、すべてのケースで高速インデックス作成を使用する必要があります。
ご質問について
あなたの質問は、ディスク上の局所性を利用して特定の種類のクエリを高速化するために、InnoDB テーブルをカスタムオーダーで保存できるかどうかでした。
これは不可能です。InnoDB の行は、クラスター化されたインデックス (基本的に主キー) に基づいてページに保存されます。行/ページは混沌とした順序になっている可能性があり、そのためOPTIMIZE TABLE
に InnoDB テーブルを使用できます。このコマンドを使用すると、テーブルは実際には主キーの順序で再作成されます。これにより、同じページまたは隣接するページで主キーのローカル行を収集できます。
InnoDB に強制できるのはこれだけです。これが不可能であるという明確な答えとして、マニュアルの別のページであるclustered index に関するマニュアルを読むことができます(「InnoDB は常にクラスター化インデックスに従ってテーブル行を並べ替えるため、ORDER BY は InnoDB テーブルには意味がありません。」)とdba.stackexchange で同じ質問があり、どの回答があなたに興味を持っているかもしれません。