background image

mysql_query("SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS * FROM foo WHERE 
b = 1 LIMIT 1000, 10"); 

$end

 = microtime(true); 

echo

 

$end

 - 

$start

 . "\r\n"; 

echo

 '===================MyISAM=======================' . "\r\n"; 

$start

 = microtime(true); 

mysql_query("SELECT SQL_NO_CACHE SQL_CALC_FOUND_ROWS * FROM foo2 
WHERE b = 1 LIMIT 1000, 10"); 

$end

 = microtime(true); 

echo

 

$end

 - 

$start

 . "\r\n";

返回结果:

一次查询就会差别这么多!!InnoDB 和 MyISAM,赶紧分析分析为什么。
首先是使用 explain 来进行查看

确定两边都没有使用 index,第二个查询查的 rows,并且 MyISAM 的查询 rows 还比
InnoDB 少这么多,反而是查询慢于 InnoDB!!这 Y 的有点奇怪。
没事,还有一个牛掰工具 profile
具体使用可以参考:http://dev.mysql.com/doc/refman/5.0/en/show-profile.html
使用方法简单来说: