현재 600M 개가 넘는 레코드가있는 테이블에서 각 그룹의 마지막 레코드를 찾는 가장 효율적인 방법을 찾고 있습니다.EXPLAIN SELECT에 사용 된 테이블이 없습니다
내가 서브 쿼리를 사용하고 있지만 그 안에 FROM 절을 생략한다 찾은 가장 빠른 방법 :
```
+------+--------------------+-------+------+---------------+------+---------+------+-----------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+--------------------+-------+------+---------------+------+---------+------+-----------+----------------------------------------------+
| 1 | PRIMARY | t1 | ALL | NULL | NULL | NULL | NULL | 185093129 | Using where; Using temporary; Using filesort |
| 2 | DEPENDENT SUBQUERY | NULL | NULL | NULL | NULL | NULL | NULL | NULL | No tables used |
+------+--------------------+-------+------+---------------+------+---------+------+-----------+----------------------------------------------+
```
유일한 다른 옵션 :
```
EXPLAIN
SELECT customer, server, disk
FROM t1
WHERE timestamp = (SELECT MAX(timestamp))
GROUP BY customer, server, disk;
```
을하지만 EXPLAIN
는 하위 쿼리에 No tables used
을 제공합니다 JOINS
또는 FROM
절이있는 하위 쿼리를 사용하고 있습니다. 하지만 둘 다 전체 테이블 스캔을하는 것처럼 보입니다. 여기에 설명 된 방법에 문제가 있습니까?
처럼 생각 : 내가 쿼리에 오류가 thow하는 기대. 그러나 - 당신의 작업을 해결하는 것에 대한 많은 답이 있습니다. –