|
philip_zhong 发表于 2011-11-10 16:03 ![]()
看了下你第一次的SQL,两次的执行计划是一致的,因此count的里面的列是没有关系的,但是你真实的SQL执行是加 ...
效果貌似好多了,结果如下:
mysql> explain SELECT SQL_NO_CACHE COUNT(DIRECTID) FROM TIMELINE_ITEM_HOME_74 WHERE OWNUNO = '62305ea1-6ba7-4fd1-98cb-36e2984c34f9' AND REMOVESTATUS='n';
+----+-------------+-----------------------+------+--------------------------------------+---------------+---------+-------+--------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+-----------------------+------+--------------------------------------+---------------+---------+-------+--------+-------------+
| 1 | SIMPLE | TIMELINE_ITEM_HOME_74 | ref | IDX_TLI_HOME_74_UNIQUE,IDX_74_OWNUNO | IDX_74_OWNUNO | 110 | const | 170496 | Using where |
+----+-------------+-----------------------+------+--------------------------------------+---------------+---------+-------+--------+-------------+
1 row in set (0.10 sec)
mysql> SELECT SQL_NO_CACHE COUNT(DIRECTID) FROM TIMELINE_ITEM_HOME_74 WHERE OWNUNO = '62305ea1-6ba7-4fd1-98cb-36e2984c34f9' AND REMOVESTATUS='n';
+-----------------+
| COUNT(DIRECTID) |
+-----------------+
| 668564 |
+-----------------+
1 row in set (1.94 sec)
profile的结果:
mysql> SHOW PROFILE for query 40;
+--------------------+----------+
| Status | Duration |
+--------------------+----------+
| starting | 0.000098 |
| Opening tables | 0.000086 |
| System lock | 0.000007 |
| Table lock | 0.000010 |
| init | 0.000021 |
| optimizing | 0.000014 |
| statistics | 0.000081 |
| preparing | 0.000015 |
| executing | 0.000007 |
| Sending data | 1.940094 |
| end | 0.000022 |
| query end | 0.000006 |
| freeing items | 0.000142 |
| logging slow query | 0.000006 |
| logging slow query | 0.000042 |
| cleaning up | 0.000007 |
+--------------------+----------+
16 rows in set (0.00 sec)
不知道66W级别的数据,1.9秒的速度算正常吗?是不是还是有些慢呢? |
|