mysql - 如何高效的查询需要合并大数据表的操作
天蓬老师
天蓬老师 2017-04-17 15:24:04
0
4
992

1.存在两个数据库Shanghai和Beijing(假设其他数据丢失,中国人口数据只剩下上海和北京)
2.两个数据库中都有同样结构的表table_people,数据量都在一千万左右
3.有以下数据
Shanghai.table_people

id username birthday
1 jhon 2016-08-15 12:00:00
2 may 2016-08-14 13:00:00
3 abcd1111 2015-08-01 14:00:00
... .... .....

Beijing.table_people

id username birthday
1 mike 2016-08-16 23:58:00
2 kitty 2016-08-03 15:00:06
3 ab111 2014-01-01 15:16:18
... .... .....

问:
1.如何高效的(1s内)查出最近在中国出生的前十个人
2.对于YII框架数据提供器应该怎么写

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

全部回覆(4)
洪涛
(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

你看這種思路可以嗎?

迷茫

birthday類型得是datetime不能是string,然後作索引。查的時候先union all再order by再limit 10。 mysql內部應該是就是對兩個索引做一下歸併排序

如果想更快,就把birthday類型改成int的

伊谢尔伦

每個表都取符合條件的前10條數據,然後再對取出的數據在代碼裡排序並取出最終的前10條數據。

不過這樣寫程式碼也很累,以後加一個表格就得改程式碼,所以建議找資料庫中間件的相關資料。

巴扎黑

兩個sql,根據id desc 以及limit 10,都插入到一個臨時表,對20條資料時間排序再limit10

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!