mysql - 如何高效的查詢需要合并大數據表的操作
問題描述
1.存在兩個數據庫Shanghai和Beijing(假設其他數據丟失,中國人口數據只剩下上海和北京)2.兩個數據庫中都有同樣結構的表table_people,數據量都在一千萬左右3.有以下數據Shanghai.table_people
idusernamebirthday1jhon2016-08-15 12:00:002may2016-08-14 13:00:003abcd11112015-08-01 14:00:00............Beijing.table_people
idusernamebirthday1mike2016-08-16 23:58:002kitty2016-08-03 15:00:063ab1112014-01-01 15:16:18............問:1.如何高效的(1s內)查出最近在中國出生的前十個人2.對于YII框架數據提供器應該怎么寫
問題解答
回答1:(SELECT * FROM Beijing.table_people ORDER BY birthday limit 10)union all(SELECT * FROM shanghai.table_people ORDER BY birthday limit 10)ORDER BY birthday limit 10
你看這種思路可以嗎?
回答2:birthday類型得是datetime不能是string,然后作索引。查的時候先union all再order by再limit 10。mysql內部應該是就是對兩個索引做一下歸并排序
如果想更快,就把birthday類型改成int的
回答3:每個表都取符合條件的前10條數據,然后再對取出來的數據在代碼里排序并取出最終的前10條數據。
不過這樣寫代碼也很累,以后加一個表就得改代碼,所以建議找一下數據庫中間件的相關資料。
回答4:兩個sql,根據id desc 以及limit 10,都插入到一個臨時表,對20條數據時間排序再limit10
相關文章:
1. 視頻文件不能播放,怎么辦?2. 前端 - 誰來解釋下這兩個 CSS selector 區別3. javascript - 求幫助 , ATOM不顯示界面!!!!4. javascript - ios返回不執行js怎么解決?5. python - 爬蟲模擬登錄后,爬取csdn后臺文章列表遇到的問題6. html5 - HTML代碼中的文字亂碼是怎么回事?7. python bottle跑起來以后,定時執行的任務為什么每次都重復(多)執行一次?8. mysql - 分庫分表、分區、讀寫分離 這些都是用在什么場景下 ,會帶來哪些效率或者其他方面的好處9. javascript - vue2如何獲取v-model變量名10. javascript - angular使從elastichearch中取出的文本高亮顯示,如圖所示
