ps:先說說寫這個文章的緣由吧, 由於我實在受不了這個mysql 時間範圍查詢如此之慢 。沒辦法總結出一些思路
這裏只給出幾點有關mysql 查詢時間範圍的建議
-
改用datetime timestamp 爲時間戳int 模式。
來講說爲何,咱們在查詢數據庫時間範圍的時候 使用between and 時,咱們能夠採起explain 來測試一下mysql 的查詢過程,很容易發如今between 查詢時間範圍時 type 爲ALL Using Where 全表掃描不是咱們想要的模式。咱們可採起的優化思路就是換成int 的時間戳模式,在邏輯處理的時候增長一個時間轉換。固然 在時間範圍查詢比較麻煩的時候。這樣索引很容易命中。mysql
-
必定要使用datetime timestamp時 能夠採起的思路
首先就是分離出子查詢,必定要將含時間範圍的子查詢分離出來,能使用查詢索引,儘可能命中索引。儘可能避免多查詢鏈接join,會更加拖慢mysql 的查詢效率。sql
-
關於datetime 和 timestamp 的查詢效率問題
首先要說明的是,幾乎沒啥區別,若是說有區別的話,那就是datetime的時間範圍逼timestamp要大, 同時timestamp 比datetime 更節省空間,至於選擇哪一個類型,我的見仁見智。數據庫
-
最後要說的
雖然文章很短。 可是這個過程是心酸的,被領導逼的。測試