Mysql
優化查詢以從 1000 萬個條目中獲取記錄
一個表有 2 個欄位
| UniqueKey | TimeStamp | ------------------------- | xfsddddq | 1024125412 | | xfstttdx | 1024125413 |< | xfsdxxau | 1024125415 |
估計有1000萬條記錄。需要
UniqueKey
從內部驗證是否存在(CURRENT_TIME - 5MINS)
。現在
- 每小時刷新一次我的桌子(不能進一步減少)。
- 在一小時內插入超過1000 萬條記錄,隨著時間的增加,為獲取一條記錄而執行的行數也進一步增加,從而導致執行時間增加。
- 如何限制查詢從(CURRENT_TIME - 5MINS)檢查一條記錄或有效地獲取結果,以便執行時間在第 5 分鐘和第 59 分鐘相同。
對於
mydb.mytable
具有 UniqueKey 和 timeStamp 的表,要查看UniqueKey
最近 5 分鐘內是否存在,只需執行此SELECT COUNT(1) FROM mydb.mytable WHERE UniqueKey = ???? AND timeStamp >= ( NOW() - INTERVAL 5 MINUTE );
要麼
SELECT COUNT(1) FROM mydb.mytable WHERE UniqueKey = ???? AND timeStamp >= ( NOW() - INTERVAL 300 SECOND );
值表示什麼???
- 如果您得到 0,則 UniqueKey 早於 5 分鐘
- 如果你得到 1,UniqueKey 在 5 分鐘內
確保 UniqueKey 具有唯一索引。
試一試 !!!
由於您的時間戳是 UNIX 時間戳,我將使用UNIX_TIMESTAMP()函式調整程式碼
SELECT COUNT(1) FROM mydb.mytable WHERE UniqueKey = ???? AND timeStamp >= UNIX_TIMESTAMP(NOW() - INTERVAL 5 MINUTE);