그렇군요.
일단 사용중인 MySQL의 버전이 어떻게 되는지요. 현재 DSN 에 올라와 있는 MySQL 매뉴얼은 개발버전인 3.23.x 버전입니다. 그리고 temporary table 을 만들 경우 type=heap 라는 옵션은 분명히 메모리에 temporary 테이블을 만듭니다.
그리고 table creation 명령어에서 select 구문은 절대로 subquery 가 아닙니다. 단지 select 구문에 합당한 row 들로 테이블을 구성하라는 명령에 불과합니다.
MySQL 은 여전히 subquery 를 지원하지는 않습니다.
참고로 저가 행해 본 temporary table 생성 테스트입니다.
mysql> create table t type=heap select * from test;
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> select * from t;
+------+
| t |
+------+
| 0 |
| 1 |
| 2 |
+------+
3 rows in set (0.00 sec)
mysql>
잘들어가고 잘 생성이 됩니다.
현재 저가 사용중이 MySQL의 버전은 mysqld Ver 3.23.12c-alpha for pc-linux-gnu on i686 로서 개발자 버전입니다.
> 테이블 만들 때, TYPE을 HEAP으로 하면 메모리에만 상주하는
> 가상 테이블이 만들어진다고 메뉴얼에 나와 있더군요.
>
> 그리고 메뉴얼에 보니
> CREATE TABLE TEST (a int not null auto_increment primary key(a), key(b)) type=heap select b, c f
> rom test2;
>
> 이런 형식으로 쿼리를 주면 새로운 가상 테이블이 만들어 진다고
> 되어 있더라구요.
>
> 그런데 제가 mysql 처음 시작할 때 mysql 에서는 서브 select를
> 지원하지 않는다고 들었거든요.
>
> 그리고 제 서버에서 위의 쿼리로 돌리면 'select...' 부분에 syntax
> 에러가 있다고 나오네요.
>
> 어떤 것이 틀린 것인지...
>
> 참고 현재 이 게시판도 가상 테이블을 못 만들어서 검색시 페이지
> 별로 화면에 처리 못한 것 아닌지...?
>
> 제가 현재 게시판 검색하거든요....
|