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

テーブルの列の順序について心配する理由はありますか?

    列の順序は、SQL Server、Oracle、MySQLにまたがる、私が調整したいくつかのデータベースに大きなパフォーマンスの影響を与えました。この投稿には、経験則 があります。 :

    • 最初に主キー列
    • 次の外部キー列。
    • 次によく検索される列
    • 後で頻繁に更新される列
    • NULL可能列は最後です。
    • 最も頻繁に使用されるnull許容列の後に、最も使用されていないnull許容列

    パフォーマンスの違いの例は、インデックスルックアップです。データベースエンジンは、インデックス内のいくつかの条件に基づいて行を検索し、行アドレスを取得します。ここで、SomeValueを探しているとしましょう。これは、次のテーブルにあります:

     SomeId int,
     SomeString varchar(100),
     SomeValue int
    

    SomeStringの長さが不明なため、エンジンはSomeValueの開始位置を推測する必要があります。ただし、順序を次のように変更した場合:

     SomeId int,
     SomeValue int,
     SomeString varchar(100)
    

    これで、エンジンは、行の開始から4バイト後にSomeValueが見つかることを認識します。したがって、列の順序はパフォーマンスにかなりの影響を与える可能性があります。

    編集:SQL Server 2005は、行の先頭に固定長のフィールドを格納します。また、各行にはvarcharの開始への参照があります。これは私が上にリストした効果を完全に打ち消します。そのため、最近のデータベースでは、列の順序による影響はなくなりました。



    1. SQLServerの日付と時刻のデータ型の比較

    2. 外部キー条件のPostgreSQLチェック制約

    3. SqlServerとOracleの両方で動作する.Netアプリケーションを作成する方法(System.Data.OracleClientは非推奨になりました)

    4. Oracle 10gは、日付で5桁の年を受け入れます