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框架数据提供器应该怎么写
으아악
이 아이디어가 괜찮다고 생각하시나요?
생일 유형은 문자열이 아닌 날짜/시간이어야 하며 색인이 생성되어야 합니다. 확인할 때 먼저 모두 유니온한 다음 주문한 다음 10개로 제한합니다. MySQL은 내부적으로 두 인덱스에 대해 병합 정렬을 수행해야 합니다
더 빠르게 하고 싶다면 생일 유형을 int로 변경하세요
각 테이블은 조건을 충족하는 처음 10개의 데이터를 가져온 다음 검색된 데이터를 코드에서 정렬하고 마지막 상위 10개의 데이터를 검색합니다.
그러나 이런 식으로 코드를 작성하는 것도 매우 피곤한 일입니다. 나중에 테이블을 추가하면 코드를 변경해야 하므로 데이터베이스 미들웨어.
ID desc와 Limit 10에 따라 두 개의 SQL을 임시 테이블에 삽입하고 20개의 데이터를 시간별로 정렬한 후 10개를 제한합니다