技术开发 频道

数据库技巧:MySQL十大优化技巧详解

  6、不要使用BY RAND()命令

  这是一个令很多新手程序员会掉进去的陷阱。你可能不知不觉中制造了一个可怕的平静。这个陷阱在你是用BY RAND()命令时就开始创建了。

  如果您真的需要随机显示你的结果,有很多更好的途径去实现。诚然这需要写更多的代码,但是能避免性能瓶颈的出现。问题在于,MySQL可能会为表中每一个独立的行执行BY RAND()命令(这会消耗处理器的处理能力),然后给你仅仅返回一行。

// what NOT to do:
$r
= mysql_query("SELECT username FROM user ORDER BY RAND() LIMIT 1");
// much better:
$r
= mysql_query("SELECT count(*) FROM user");
$d
= mysql_fetch_row($r);
$
rand = mt_rand(0,$d[0] - 1);
$r
= mysql_query("SELECT username FROM user LIMIT $rand, 1");

  7、尽量避免SELECT *命令

  从表中读取越多的数据,查询会变得更慢。他增加了磁盘需要操作的时间,还是在数据库服务器与WEB服务器是独立分开的情况下。你将会经历非常漫长的网络延迟,仅仅是因为数据不必要的在服务器之间传输。

  始终指定你需要的列,这是一个非常良好的习惯。

// not preferred
$r
= mysql_query("SELECT * FROM user WHERE user_id = 1");
$d
= mysql_fetch_assoc($r);
echo "Welcome {$d
['username']}";
// better:
$r
= mysql_query("SELECT username FROM user WHERE user_id = 1");
$d
= mysql_fetch_assoc($r);
echo "Welcome {$d
['username']}";
// the differences are more significant with bigger result sets

  8、从PROCEDURE ANALYSE()中获得建议

  PROCEDURE ANALYSE()可让MySQL的柱结构分析和表中的实际数据来给你一些建议。如果你的表中已经存在实际数据了,能为你的重大决策服务。

数据库技巧:MySQL十大优化技巧详解

0
相关文章