2010-09-03 69 views
7

是否有解释这些状态的地方?mysql profiler“发送数据”

http://dev.mysql.com/tech-resources/articles/using-new-query-profiler.html

我的具体问题是关于这个查询:

select count(*) 
from 135_5m.record_updates u, 135_5m.records r 
where r.record_id = u.record_id and 
    (u.date_updated > null or null is null) and 
    u.date_updated <= '2011-01-03'; 

它返回一个数字 - 4053904.那么,为什么大多数的时间花费在“发送数据”?它只是名字不好吗?当然,“发送数据”不仅仅是发送数据?

+--------------------------------+-----------+-------+ 
| Status       | Duration | Swaps | 
+--------------------------------+-----------+-------+ 
| starting      | 0.000224 |  0 | 
| checking query cache for query | 0.000188 |  0 | 
| checking permissions   | 0.000012 |  0 | 
| checking permissions   | 0.000017 |  0 | 
| Opening tables     | 0.000036 |  0 | 
| System lock     | 0.000015 |  0 | 
| Table lock      | 0.000067 |  0 | 
| init       | 0.000105 |  0 | 
| optimizing      | 0.000052 |  0 | 
| statistics      | 0.000254 |  0 | 
| preparing      | 0.000061 |  0 | 
| executing      | 0.000017 |  0 | 
| Sending data     | 32.079549 |  0 | 
| end       | 0.000036 |  0 | 
| query end      | 0.000012 |  0 | 
| freeing items     | 0.000089 |  0 | 
| storing result in query cache | 0.000022 |  0 | 
| logging slow query    | 0.000008 |  0 | 
| logging slow query    | 0.000008 |  0 | 
| cleaning up     | 0.000011 |  0 | 
+--------------------------------+-----------+-------+ 
+0

题外话,但什么是该位的目的的majrity时间'u.date_updated>空或null为null'?肯定它总是真的? – 2010-09-07 13:00:17

+1

该查询最初是java代码中的预备状态。我取代了?在我的代码中使用实际值来测试性能。 – andersonbd1 2010-09-07 14:33:21

回答

0

将数据发送到客户端之前,MySQL的需要读取数据时,读取数据的阶段可能采取“发送数据”