0

複合インデックスが正しい言葉かどうかはわかりません。つまり、複数の列で構成されるインデックスがあるということです。

問題:

私の主キーは 2 つの列で構成されており、正常に機能します。列Aと列B。2 つの columnA と columnC で構成される同じテーブルに別のインデックスを作成しようとすると、問題が発生します。2番目のインデックスを作成するとすぐに、それが引き継がれてクラスター化インデックスになるため、テーブルはそれによって順序付けられ、主キーインデックスが最初に作成されることを無視します。

考えられる解決策:

ColumnA と ColumnB の最初のインデックスでテーブルを並べ替えたいのですが、他の目的で 2 番目のインデックスを使用しています。この問題を解決するために、ColumnA と ColumnC が唯一のインデックスである 2 番目のテーブルにデータを複製することができますが、回避できる場合はそうしたくありません。

システム情報: MySQL

4

1 に答える 1

1

MySQL (およびその他の SQL エンジン) では、テーブルが特定の順序で並べられるという保証はありません。順序付けを確実にする唯一の方法は、ORDER BY句を使用することです。

ここで、ORDER BY を使用しないと順序付けが保証されない理由: 行を挿入または削除すると、サーバーは新しい挿入のために「穴」を自由に再利用できます。また、パフォーマンスが向上する場合、サーバーは最初にキャッシュから、または現在ディスク ヘッドがある場所から自由に行を配信できLIMITますORDER BY

つまり、簡単に言えばORDER BY、選択で常に使用するだけで、問題は解決します。

于 2013-07-14T08:18:41.543 に答える