単純なselect文、
MySQL
1select count(*) from MyTable
の実行時間が長くなってしまい原因がわかりません。
原因分析を行いたいのですが、どのように分析すればよいでしょうか?
DB上にテーブルは数百あるのですが、遅いテーブルは1つだけしか見つかっていません。
また、同様のDBが2つあるのですが、遅いのは1つのDBだけです。
MySQL
1select count(*) from MyTable;
・遅い環境
count=1,800,000件
処理時間=5分ほど
・速い環境
count=770,000件
処理時間=0.2秒ほど
現在推測している理由は、MyTableにはlongblob型のデータがあるからではないかと思っています。
しかし、
MySQL
1select 2 max(length(longblobData)) as max, 3 min(length(longblobData)) as min, 4 avg(length(longblobData)) as average, 5 count(longblobData) as count 6from MyTable
を別日に実行しても有意な差が見られませんでした。(別日なのでデータ量が上とは異なっています。)
・遅い環境
max = 7,548
min = 819
avg = 3,519.9136
count = 963,098
処理時間=5分ほど
・速い環境
max = 7,629
min = 819
avg = 3,434.5847
count = 354,868
処理時間=0.8秒ほど
explainを実行した結果は以下のとおりです。
MySQL
1explain select count(*) from MyTable;
MySQL
1explain select 2 max(length(longblobData)) as max, 3 min(length(longblobData)) as min, 4 avg(length(longblobData)) as average, 5 count(longblobData) as count 6from MyTable