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

多くのテーブルまたは行、SQLでより効率的なものはどれですか?

    リレーショナルデータベースは、テーブルごとに多くの行を格納するように設計されています。次のような大きなテーブルを容易にするメカニズムはたくさんあります。

    • 検索を高速化するためのフィールドの任意の組み合わせのインデックス
    • ページのキャッシュにより、一般的に使用されるページはメモリに残ります
    • リクエストをさらに高速化するための垂直分割(列型データベース)
    • ハッシュ結合やグループ化などの高度なアルゴリズム(少なくともMySQL以外のデータベースでは)
    • クエリを処理するための複数のプロセッサとディスクの使用

    データを1つのテーブルに配置する場合、さらに難しいことが1つあります。それは、セキュリティです。実際、状況によってはこれが主な懸念事項であり、基本的にデータを別のテーブルに配置する必要があります。これらのアプリケーションはまれであり、その間にあります。

    複数のテーブルにデータを保存するのがいかに悪いかを示す例として、システムに会社ごとに1つのレコードがあり、それをテーブルに保存するとします。このレコードには、会社に関する情報(名前、住所など)が格納されます。呼び出しは100バイトの情報です。

    スキーマには、「会社」ごとに個別のテーブルがあるため、テーブルごとに1行になります。そのレコードは1つのデータページに存在します。データページは16キロバイトになる可能性があるため、このデータを保存するために約15.9キロバイトを浪費しています。このようなレコードを1000個保存すると、約7ページ(112 Kバイト)ではなく16Mバイトになります。これは、パフォーマンスに大きな打撃を与える可能性があります。

    さらに、複数のテーブルを使用する場合、すべてのテーブルを維持し、異なるテーブルのデータの正確性を確保するという課題を考慮していません。メンテナンスの更新は、少数ではなく、数千のテーブルに適用する必要があります。



    1. 大文字と小文字を区別するテーブル名を強制するにはどうすればよいですか?

    2. 1つのクエリで異なる値を持つ複数の行を更新する-MySQL

    3. サブクエリを使用したmysqlベースでの非常に遅い削除

    4. CSVファイルをSQLServerにインポートします