2014-02-10 70 views
0
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?它總是顯示不同的執行時間嗎?任何幫助將不勝感激。mysql採取不同的執行時間

+0

那麼你的問題是什麼? – Steve

+0

任何幫助什麼? –

回答

0

MySql有一個查詢緩存。如果第二次執行相同的語句,通常與第一次執行相比,這隻需要部分時間,因爲結果可以從查詢緩存中獲取。

緩存失效/清除後,再次需要更多時間執行。

根據數據庫上還有什麼其他的客戶在做,也許這種說法等待表鎖釋放所需要的子查詢等,有中鎖優先級爲SELECTINSERTUPDATE這可能應用。

+0

請更新我的查詢,如果它需要更改。爲什麼它顯示不同的執行時間。我需要恆定的時間來執行此 – user3292505

+0

「恆定時間」是不可能實現像DBS一樣的MySQL。如果在mysql配置中啓用了這個功能,你可以在查詢中加入''SELECT SQL_NO_CACHE ...'',看這裏:[mysql](http://dev.mysql.com/doc/refman/4.1/en/query -cache-in-select.html) –

+0

添加這個SQL_no_CACHE會影響我的php文件,其中這個查詢已經生效 – user3292505