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?它总是显示不同的执行时间?任何帮助都会受到赞赏。
答案 0 :(得分:0)
MySql有一个查询缓存。如果第二次执行相同的语句,通常这只会花费部分时间与第一次执行相比,因为结果可以从查询缓存中获取。
一旦缓存被无效/清除,它将再次需要更多时间来执行。
根据数据库上其他客户端正在执行的操作,可能此语句等待释放子锁查询所需的表锁。SELECT
,{{{0}}的锁具有优先权。 1}}和INSERT
可能适用。