次のような単純なSQLステートメントの時間計算量はどれくらいですか?
INSERT into table (col1, col2, col3) values ("a", "b", "c")
それは以下にどのように依存しますか:
- テーブルのサイズ
- col1、col2のデータ型
- テーブルの列数、つまり。col1、col2、col3など
これは、MyISAMとInnoDBのどちらを使用しているかによって異なりますか?
次のような単純なSQLステートメントの時間計算量はどれくらいですか?
INSERT into table (col1, col2, col3) values ("a", "b", "c")
それは以下にどのように依存しますか:
これは、MyISAMとInnoDBのどちらを使用しているかによって異なりますか?
MySQL 5.0のドキュメントには、このトピックに関するすばらしいページがあります。
この記事では、挿入タスクに含まれる各サブタスクのおおよその比例コストを示しています。
行の挿入に必要な時間は、次の要因によって決まります。数字はおおよその比率を示しています。
接続:(3)
サーバーへのクエリの送信:(2)
クエリの解析:(2)
行の挿入:(1×行のサイズ)
インデックスの挿入:(1×インデックスの数)
締めくくり:(1)
これは、テーブルを開くための初期オーバーヘッドを考慮していません。これは、同時に実行されているクエリごとに1回実行されます。
テーブルのサイズは、Bツリーインデックスを想定した場合、logNによるインデックスの挿入を遅くします。
記事の残りの部分では、挿入を高速化するための手法を提供します。これは、挿入速度がアプリケーションのボトルネックになる場合に役立ちます。