日期:2014-05-16 浏览次数:20575 次
// query cache does NOT work     
$r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");     
    
// query cache works!     
$today = date("Y-m-d");     
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");    
 
// query cache does NOT work 
$r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()");  
 
// query cache works!  
$today = date("Y-m-d");  
$r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'"); 

// do I have any users from Alabama?     
// what NOT to do:     
$r = mysql_query("SELECT * FROM user WHERE state = 'Alabama'");     
if (mysql_num_rows($r) > 0) {     
    // ...     
}       
// much better:     
$r = mysql_query("SELECT 1 FROM user WHERE state = 'Alabama' LIMIT 1");     
if (mysql_num_rows($r) > 0) {     
    // ...     
}   
// looking for companies in my state     
$r = mysql_query("SELECT company_name FROM users    
    LEFT JOIN companies ON (users.state = companies.state)    
    WHERE users.id = $user_id");     
    
// both state columns should be indexed     
// and they both should be the same type and character encoding     
// or MySQL might do full table scans // 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");   
 // 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 bi