Mysql

優化查詢以從 1000 萬個條目中獲取記錄

  • June 5, 2017

一個表有 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);

引用自:https://dba.stackexchange.com/questions/61926