4

mysql のレコードのデフォルトの順序付け ID は ASC (つまり、挿入した行はテーブルの下に表示されます) ですが、テーブルからの最新の情報 (つまり、下にある行) のみを使用します。

デフォルトの順序を DESC に変更すると (つまり、新しいレコードがテーブルの一番上に来るように)、パフォーマンスが向上しますか? テーブルの一番上から頻繁に情報が照会されます。

4

2 に答える 2

4

逆だと思います。

このコメントは、SQL Serverでのインデックスの動作を理解する方法に基づいています。MySQLでのインデックスの動作について詳しく読む機会があれば、後で改訂を試みます。

インデックスがソートされているのと同じ順序で行を挿入する方が、逆の順序で行を挿入するよりも、パフォーマンスがわずかに向上する可能性があります。

同じ順序で挿入し、次に挿入する行の並べ替え順序が既存の行よりも常に大きい場合、行データの最後のページで次に使用可能な空のスポット(存在する場合)が常に見つかります。

逆の場合は、常に次の挿入行の並べ替え順序を既存の行よりも少なくすると、行データの最初のページで常に衝突が発生し、エンジンは行の位置をシフトするために少し多くの作業を行いますページにその余地がある場合。

selectステートメントのorderby句については、次のようになります。1)SQL標準には、インデックスに関するものはなく、ORDER BY句を除いて、結果セットの順序を保証するものはありません。通常、1つのインデックスのみを使用するSQL Serverのクエリでは、インデックスの順序で結果が返されます。ただし、分離レベルが「コミットされていない読み取り」(カオス?)に変わると、メモリまたはディスクで見つかった順序で行が返される可能性が高くなりますが、必ずしも必要な順序ではありません。

2)selectステートメントのbyの順序が、インデックスとまったく同じ列基準に基づいている場合、データベースサーバーは、インデックスの順序、またはインデックスの順序の反対のいずれかで同じように実行する必要があります。これは、異なる列に対してASC-DESC宣言が混在する複数列のインデックスがある場合を除いて、非常に簡単です。インデックスの順序がDESCおよびASCであるインデックス宣言のASCおよびDESC宣言(明示的および暗黙的)を置き換えることによって逆インデックスの順序が決定される場合、インデックスの順序に等しい順序および逆のインデックスの順序に等しい順序で同等のパフォーマンスを得ることができます。 orderby句。

于 2012-12-10T13:10:45.230 に答える
1

パフォーマンスの変更は、レコードを挿入するのではなく、レコードをクエリするときに発生します。

クエリの場合、キーによるデータベースクエリの速度は通常同様であるため、これが大きな影響を与えるとは思えません。

また、データにも依存するため、いくつかのテストを実行します。

于 2012-11-25T03:19:17.203 に答える