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. mac连接阿里云docker集群,已经卡了2天了,求问?2. Ant design vue中的联动选择取消操作3. java - 需要一个加密,验证算法4. javascript - 图片链接请求一直是pending状态,导致页面崩溃,怎么解决?5. javascript - nodejs关于进程间发送句柄的一点疑问6. css - 移动端 盒子内加overflow-y:scroll后 字体会变大7. html5 - 关于电脑手机ip地址的问题8. java - 急等。vs写一个简单程序关闭黑窗老是响应很久,然后报错,无法再次运行9. 浅谈Vue static 静态资源路径 和 style问题10. python爬虫 - mongodb 存入了pymongo传入的多个数据之后怎么提取有用的数据
