6
MySQL과 MariaDB 쿼리 실행 계획간에 차이가 있습니까?MySQL과 MariaDB의 차이 쿼리 실행 계획
예인 경우 어떤 사람이 더 낫습니까? 마리아 DB에서
CREATE TABLE `Table1` (
`ID` int(11) NOT NULL,
KEY `ID` (`ID`)
);
CREATE TABLE `Table2` (
`ID` int(11) NOT NULL,
KEY `ID` (`ID`)
);
CREATE TABLE `Table3` (
`ID` int(11) NOT NULL,
PRIMARY KEY (`ID`)
);
, MySQL의에서
MariaDB [truepay_psr]> explain select T1.ID FROM Table1 T1 LEFT JOIN (SELECT T1.ID FROM Table3 T1 LEFT JOIN Table2 T2 ON T1.ID = T2.ID WHERE T2.ID IS NULL) T2 ON T1.ID=T2.ID WHERE T2.ID IS NULL;
+------+-------------+-------+--------+---------------+---------+---------+-------------------+------+--------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+------+-------------+-------+--------+---------------+---------+---------+-------------------+------+--------------------------+
| 1 | SIMPLE | T1 | index | NULL | ID | 4 | NULL | 1 | Using index |
| 1 | SIMPLE | T1 | eq_ref | PRIMARY | PRIMARY | 4 | truepay_psr.T1.ID | 1 | Using where; Using index |
| 1 | SIMPLE | T2 | ref | ID | ID | 4 | truepay_psr.T1.ID | 1 | Using where; Using index |
+------+-------------+-------+--------+---------------+---------+---------+-------------------+------+--------------------------+
3 rows in set (0.01 sec)
,
mysql> explain select T1.ID FROM Table1 T1 LEFT JOIN (SELECT T1.ID FROM Table3 T1 LEFT JOIN Table2 T2 ON T1.ID = T2.ID WHERE T2.ID IS NULL) T2 ON T1.ID=T2.ID WHERE T2.ID IS NULL;
+----+-------------+------------+--------+---------------+---------+---------+------------+------+--------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+------------+--------+---------------+---------+---------+------------+------+--------------------------------------+
| 1 | PRIMARY | <derived2> | system | NULL | NULL | NULL | NULL | 0 | const row not found |
| 1 | PRIMARY | T1 | index | NULL | ID | 4 | NULL | 1 | Using index |
| 2 | DERIVED | T1 | index | NULL | PRIMARY | 4 | NULL | 1 | Using index |
| 2 | DERIVED | T2 | ref | ID | ID | 4 | test.T1.ID | 1 | Using where; Using index; Not exists |
+----+-------------+------------+--------+---------------+---------+---------+------------+------+--------------------------------------+
4 rows in set (0.00 sec)
정확한 결과가 나오는 것이 좋습니다. 그렇지 않으면 데이터가 거의없는이 어리석은 간단한 테이블을 사용하면 테스트 방법으로는 쓸모가 없다. –