в этом запросе https://www.db-fiddle.com/f/snzSLd8y1oRNRqdsFpNdHa/0
SELECT test0.id,
(SELECT GROUP_CONCAT(test2.one_info) FROM test2 WHERE test2.one_id = test1.id) AS GC
FROM test0
INNER JOIN test1 ON test1.zero_id = test0.id
WHERE test0.id = 1 AND test1.id = 1 AND test1.rand = 5;
test1.rand=5
существует, поэтому план выполнения равен
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
| --- | ------------------ | ----- | ---------- | ----- | ------------- | ------- | ------- | ----- | ---- | -------- | ----------- |
| 1 | PRIMARY | test0 | | const | PRIMARY | PRIMARY | 4 | const | 1 | 100 | Using index |
| 1 | PRIMARY | test1 | | const | PRIMARY | PRIMARY | 4 | const | 1 | 100 | |
| 2 | DEPENDENT SUBQUERY | test2 | | ref | IND | IND | 5 | const | 4 | 100 | Using index |
, но когда я изменяю его на что-то, что не существует, как test1.rand=10
, он дает этот план возбуждения
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
| --- | ------------------ | ----- | ---------- | ---- | ------------- | --- | ------- | ----- | ---- | -------- | --------------------------------------------------- |
| 1 | PRIMARY | | | | | | | | | | Impossible WHERE noticed after reading const tables |
| 2 | DEPENDENT SUBQUERY | test2 | | ref | IND | IND | 5 | const | 4 | 100 | Using index |
и, несмотря на Extra: Impossible WHERE noticed after reading const tables
и не возвращает результатов, он все еще использовал select_type: DEPENDANT SUBQUERY
и получил rows: 4
как исправить эту проблему и заставить ее вообще ничего не возвращать на Extra: Impossible WHERE noticed after reading const tables
для сохранения производительности?
я пробовал подобрать подзапрос, подобный этому
SELECT test0.id, GC.GC
FROM test0
INNER JOIN test1 ON test1.zero_id = test0.id
INNER JOIN (SELECT GROUP_CONCAT(test2.one_info) AS GC FROM test2 WHERE test2.one_id = 1) AS GC
WHERE test0.id = 1 AND test1.id = 1 AND test1.rand = 10;
, но сделал ту же проблему
| id | select_type | table | partitions | type | possible_keys | key | key_len | ref | rows | filtered | Extra |
| --- | ----------- | ----- | ---------- | ---- | ------------- | --- | ------- | ----- | ---- | -------- | --------------------------------------------------- |
| 1 | PRIMARY | | | | | | | | | | Impossible WHERE noticed after reading const tables |
| 2 | DERIVED | test2 | | ref | IND | IND | 5 | const | 4 | 100 | Using index |