単純なselect文、
MySQL
select count(*) from MyTable
の実行時間が長くなってしまい原因がわかりません。
原因分析を行いたいのですが、どのように分析すればよいでしょうか?
DB上にテーブルは数百あるのですが、遅いテーブルは1つだけしか見つかっていません。
また、同様のDBが2つあるのですが、遅いのは1つのDBだけです。
MySQL
select count(*) from MyTable;
・遅い環境
count=1,800,000件
処理時間=5分ほど
・速い環境
count=770,000件
処理時間=0.2秒ほど
現在推測している理由は、MyTableにはlongblob型のデータがあるからではないかと思っています。
しかし、
MySQL
select max(length(longblobData)) as max, min(length(longblobData)) as min, avg(length(longblobData)) as average, count(longblobData) as count from 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
explain select count(*) from MyTable;
MySQL
explain select max(length(longblobData)) as max, min(length(longblobData)) as min, avg(length(longblobData)) as average, count(longblobData) as count from MyTable
またprimarykeyは設定されているようです。
まだ回答がついていません
会員登録して回答してみよう