mysql采用不同的执行时间

时间:2014-02-10 10:46:02

标签: php mysql

SELECT user.name, user.age, user.lastlogin, user.loguserid,user.sex, ( 3963.17 * ACOS( COS( RADIANS( 54.662280100000) ) * COS( RADIANS( latitude ) ) * COS( RADIANS( -1.630407900000) - RADIANS( longitude ) ) + SIN( RADIANS( 54.662280100000 ) ) * SIN( RADIANS( latitude ) ) ) ) AS distance_in_miles
FROM user
WHERE latitude != '' 
AND longitude != ''
AND loguserid !=526306 
AND age >18 AND age <=50 
AND  sex !=0
AND ( 3963.17 * ACOS( COS( RADIANS( 54.662280100000 ) ) * COS( RADIANS( latitude ) ) * COS( RADIANS( -1.630407900000 ) - RADIANS( longitude ) ) + SIN( RADIANS( 54.662280100000) ) * SIN( RADIANS( latitude ) ) ) ) <=50 
AND NOT EXISTS (SELECT blockuser.userid
FROM blockuser 
WHERE blockuser.newuserid = user.loguserid 
AND blockuser.userid =526306 AND siteid =1071) 
AND NOT EXISTS (SELECT fav.userid FROM fav WHERE fav.favuserid =user.loguserid
AND siteid =1071 AND fav.userid =526306 ) ORDER BY `user`.`loguserid` DESC

这是我的sql?它总是显示不同的执行时间?任何帮助都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

MySql有一个查询缓存。如果第二次执行相同的语句,通常这只会花费部分时间与第一次执行相比,因为结果可以从查询缓存中获取。

一旦缓存被无效/清除,它将再次需要更多时间来执行。

根据数据库上其他客户端正在执行的操作,可能此语句等待释放子锁查询所需的表锁。SELECT,{{{0}}的锁具有优先权。 1}}和INSERT可能适用。