3

データベース サーバーに mysql スロー クエリ ログをセットアップし、ロング クエリ時間を 5 に設定しました。ログと、ミリ秒しかかからないログ クエリを確認しました。その理由を知っている人はいますか?ログの一部を次に示します。

最後のクエリは、最適化されているわけではありません。450000 行を調べたと書かれているので、ログに表示されても驚かないでしょう。ただし、クエリ時間は 0.2 秒しかかからなかったとのことです。遅いクエリログには、クエリの実行時間だけではありませんか?

# Query_time: 0.000525  Lock_time: 0.000151 Rows_sent: 1  Rows_examined: 115
SET timestamp=1349393722;
SELECT `we_members`.*, `we_referrals`.`code` as referral_code
FROM (`we_members`)
LEFT JOIN `we_referrals` ON `we_referrals`.`m_id` = `we_members`.`id`
WHERE `we_members`.`facebook_id` = '100'
LIMIT 1;

# Query_time: 0.000748  Lock_time: 0.000104 Rows_sent: 3  Rows_examined: 691
SET timestamp=1349393722;
select distinct(m_id), m.first_name, m.facebook_id, m.photo_url from
            we_connections f
            left join we_members m on m.id = f.m_id
            where ( (f.friend_id = 75 or f.m_id = 75 and m.id != 75))
            and m.id >0
            and m.id != 75
            order by m_id;

# Query_time: 0.259535  Lock_time: 0.000098 Rows_sent: 16  Rows_examined: 455919
SET timestamp=1349393722;
select distinct(m_id), m.first_name, m.facebook_id, m.photo_url from
            we_connections f
            left join we_members m on m.id = f.m_id
            where (f.friend_id IN (select friend_id from we_connections f where f.m_id = 75) or (f.friend_id = 75 or f.m_id = 75 and m.id != 75))
            and m.id >0
            and m.id != 75
            order by m_id;
4

1 に答える 1

5

いくつかのクエリで多数の行が検査されていることを考えると、おそらくlog_queries_not_using_indexesオプションも設定されています。インデックスを使用しないクエリも低速クエリ ログに書き込まれます。ファイルでこのオプションを確認my.cnfできます。

http://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_log-queries-not-using-indexes

ログに書き込まれるクエリの種類の詳細については、http://dev.mysql.com/doc/refman/5.5/en/slow-query-log.html をご覧ください

于 2012-10-05T00:29:04.963 に答える