2013-10-23 34 views
0

我設計了一個類似bit.ly的網站,但有點不同。用mysql寫的php。當我在localhost上運行它時,一切似乎都很順利,頁面在4.5毫秒內加載完畢,我像蛤蜊一樣快樂。Mysql'where子句'與長表?

我將它上傳到服務器,用戶開始瀏覽網站並使用它。一切似乎工作正常,直到主表開始達到數百萬行。

表格現在是100萬行長度(它必須是這樣),並在不斷增長。需要該表需要500毫秒加載... MySQL查詢的網頁是下一個:

select link 
from table 
where kind = $kind and kind_idd = $kind_idd and live = 1; 

它可以返回超過1個鏈接,實際上,它通常10-50之間的鏈接返回。

問題是where子句。我確信mysql應該有一些東西讓它更快。我一直在問谷歌,我找到了索引,鍵等等。但是,我找不到一個網站來解釋它的假人。如果有人能給我一個例子,讓這件事情變快,我會非常感激。

謝謝!

+0

什麼是表結構是怎樣的? –

回答

2

嘗試使用mysql explain plan 以便您可以看到發生了什麼。

你可能需要確保你有kind, kind_idd and live指標看http://dev.mysql.com/doc/refman/5.0/en/create-index.html

+0

如果您的查詢將始終返回10-50個鏈接,則使用「LIMIT 50」SQL在此限制之後停止搜索。 – thiagobraga

+0

地毯式轟炸帶索引的表格不應該在未知道結構和基數的情況下完成。 –

+0

@傑克點採取了,我已經更新了我的答案反映。 –