【MySQL】カラムの全部取得と一部取得の速さ

MySQLを扱っていて、SELECT文でSQLを発行する場合、カラム(フィールド)を全部取得した方が速いのか、一部取得の方が速いのかベンチマークを取ってみました。

結論から言うと、一部取得の方が速いです

発行するSQL

一部取得 : ”SELECT state FROM table1″

全部取得 : ”SELECT * FROM table1″

一部のカラムを抽出(state)
平均値: 0.023152 [sec]
全測定結果:

Array
(
    [1] => 0.006020
    [2] => 0.005948
    [3] => 0.006169
    [4] => 0.029970
    [5] => 0.025944
    [6] => 0.006965
    [7] => 0.006757
    [8] => 0.005894
    [9] => 0.005891
    [10] => 0.131971
    [mean] => 0.023152
    [iterations] => 10
)

全部のカラムを抽出 (*)
平均値: 0.128534 [sec]
全測定結果:

Array
(
    [1] => 0.025478
    [2] => 0.161143
    [3] => 0.135521
    [4] => 0.175835
    [5] => 0.104871
    [6] => 0.125868
    [7] => 0.138533
    [8] => 0.125199
    [9] => 0.141315
    [10] => 0.151584
    [mean] => 0.128534
    [iterations] => 10
)

ちなみに使用したベンチマーカーは、PEAR::Benchmark_Iterateです。 

 更に、もう一つ結果を。下で、使用したベンチマーカーは、PEAR::Benchmark_Timerです。 

  ex time %
Start 0.00%
全部のカラム抽出(*) 0.035709 81.70%
一部のカラム抽出(state) 0.007989 18.28%
Stop 0.000009 0.02%
total 0.043707 100.00%

どれくらい速度に差が出るかは、データベースのカラムの構成などにもよりますが、一つのカラムをたくさんのカラムから抽出する場合には、特定のカラムを指定してSELECTした方が速いようです。

カテゴリー: SQL パーマリンク

コメントを残す

メールアドレスが公開されることはありません。