2011-11-01 54 views
-2

可能重複:
How to optimize database this query in large database?我想在查詢工作的大型數據庫

SELECT id FROM `user_tmp` 
WHERE `code` = '9s5xs1sy' 
    AND `go` NOT REGEXP 'http://www.xxxx.com/aflam/|http://xx.com|http://www.xxxxx.com/aflam/|http://www.xxxxxx.com/v/|http://www.xxxxxx.com/vb/' 
    AND check='done' 
    AND `dataip` <1319992460 
ORDER BY id DESC 
LIMIT 50 

MySQL的返回:

顯示行0 - 29(50總計,查詢花了7.3102秒)[id:2622270 - 2602288]

如果刪除

AND `dataip` <1319992460 

MySQL的返回

顯示行0 - 29(50總計,查詢花費0.0859秒)[ID:3637556 - 3627005]

如果沒有數據,MySQL返回

MySQL返回一個空的結果集(即零行)。 (查詢花費21.7332秒)

我想正確的方式做查詢

感謝名單

+6

OK ...那麼問題是什麼? –

+0

你的問題是什麼? 我想你想要一個關於dataip的索引? – themel

+0

-1不知道你在問什麼或做什麼。 – JonH

回答

0

你應該有dataip柱等你用在當前的查詢正確的索引。

+0

我想正確的方式來查詢沒有工作很多查詢了 –

+0

@ 10neen這正是你應該做的:添加/修改索引 – genesis

+0

請問如何解釋? –

0

我相信步驟1應該是在您的查詢上運行EXPLAIN以查看查詢使用哪些索引(如果有)。

我推薦從這裏開始:Optimizing Queries with EXPLAIN

閱讀該部分,嘗試在您的查詢上運行EXPLAIN,然後返回輸出格式,我們可以理解 - 以及您可能認爲它的含義。

祝你好運。

+0

什麼是解決方案的查詢工作正常,沒有在服務器上的錯誤查詢 請幫我我編程新 thanx –

+0

我不知道你的問題是什麼。查詢花費的時間太長了嗎?是不是你收到了不正確的數據? –

+0

是的查詢時間太長我不會最好的方式自我 –