2011-11-29 99 views
0
Table Query: 
Id  Subject LangId replyCount created_at 

Table userLogin: 
Id  userId  Fname Lanme created_at 

我使用選擇查詢與內部聯接來從MySQL的數據,但它需要大約5秒獲取10000條記錄,我也用索引上coulmn LANGID,你可以提出任何其他讓它跑得更快的方法?如何從MySQL獲取大數據

select q.id,q.Subject,u.userid,q.replyCount,DATE_FORMAT(q.created_at,'%d-%b-%Y') 
from query as q INNER JOIN userLogin as u on q.userId = u.id where q.LangId = ? 
+0

我新手到PHP,MySQL和關於刪除的問題有人投票回答這個問題,似乎沒有多少人回覆投票下來的問題。 –

+1

@ neel.1708改爲改善您的問題!例如,添加「EXPLAIN select q.id,q.Subject,u.userid,...」,「SHOW CREATE TABLE query」和「SHOW CREATE TABLE userLogin」的輸出。否則,人們將無法得到很多幫助。 – sfussenegger

+0

是的,下次會這樣做。謝謝sfussenegger。 –

回答

0

只是不要一次選擇10000條記錄。

要執行分頁,您必須在每個頁面上使用LIMIT子句運行相同的查詢,以獲取頁面上所需的唯一記錄。

+0

如果我顯示頁面上的第50條記錄,然後用戶點擊下一步如何獲取下一個50條記錄,之後他點擊和以前,然後如何顯示前50個使用限制。 –

+0

要做簡單的數學:10.000行(讓我們假設)255字節產量2.550.000字節或大約2MB。這不是很重要,至少沒有理由持續5秒的執行時間。我只是在小於0.1s的時間內對數據庫做了類似的查詢。不幸的是,在沒有任何其他信息的情況下找到其他原因幾乎是不可能的。 – sfussenegger

+0

@ neel.1708 LIMIT($ pageNumber * $ itemsPerPage),$ itemsPerPage –

0

使用分頁如果u有LARG記錄,如果你有複雜的查詢,然後進行觀看錶,然後簡單地從視圖中單select語句取記錄..

希望你能理解..

+0

是的,從視角選擇會更快比複雜的選擇查詢? –