2013-10-25 83 views
0

誰擁有了一些快好主意登錄,當我在一個表(MySQL的)有更多然後1,000,00〜500,000,00數據等調度研究Mysql的degsin快速選擇

表:的UserInfo(更多然後1000 ,00〜500,000,00用戶)

UserID(PK int) LoginName(UK varchar(50)) LoginPassword LastLoginTime 

表:LoginLog

LogID(PK) UserID(FK) LoginTime LoginIp 

表3:其他

OtherID(PK) UserID(FK) Others... 

當使用登錄我使用SQL(它可以快速):

select LoginPassword from UserInfo where LoginName = 'string' 

當我顯示LoginLog或其它表,我將使用SQL:

select U.LoginTime, 
     U.LoginIp, 
     U.UserID, 
     L.LoginName 
from UserInfo U 
left join LoginLog L 
    on U.UserID=L.UserID 
limit 0,10 

我通過使用分區UserInfo表中的LoginName(它可以快速登錄),但關聯查詢非常慢。

拆分表?分區使用UserID?

誰有更好的解決方案,拆分表規則,分區規則?

+0

服務器故障的問題? – Akshay

+0

@Akshay太多的數據 – zt9788

+0

不確定連接是否是問題,而不是你帶回數百萬條記錄(然後在第一個10之後忽略任何記錄)。 – Kickstart

回答

1

您可以每隔30分鐘運行一次cron以使數據非規範化,以便不存在表連接。 http://en.wikipedia.org/wiki/Denormalization

+0

謝謝〜我會看到它! – zt9788

+0

如果有幫助,請標記爲已解決/投票。謝謝 – Akshay

+0

如果有幫助,獲得+1。如果它解決了問題,請標記爲正確的答案。儘管如此,在任何答案標記正確之前至少等待24小時是一種好習慣。 –