Сохранение результатов запроса из EXECUTE в представлении - MySQL - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь сохранить выходные данные следующего запроса в виде или временной таблице.Я знаю, что для представления требуется оператор SELECT, но мне было интересно, может ли оно работать также с командой EXECUTE.

Это мой запрос:

SET @por= NULL;
SELECT

CONCAT(GROUP_CONCAT(
DISTINCT
CONCAT('SELECT * FROM ', table_name)
SEPARATOR '\r\nUNION\r\n'
), '\r\nUNION\r\n', 'select * from table1')

INTO
@union_por_tables
FROM
information_schema.tables
WHERE
table_schema = 'schema' AND table_name LIKE '%por%';

PREPARE stmt1 FROM @union_por_tables; 
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1

Этот запрос возвратамне 250000 строк и я хочу их хранить.Кто-нибудь может мне помочь?

1 Ответ

0 голосов
/ 10 апреля 2019

То, что вы описали, называется материализованным представлением

Насколько я знаю, MySQL не поддерживает материализованные представления.Вы можете смоделировать его, вставив данные в фактическую таблицу, поддерживая кеш вручную.

MariaDB реализует материализованные представления через то, что они называют flexviews.Документы находятся здесь: https://mariadb.com/kb/en/library/flexviews/

Вы можете попробовать опцию MariaDB и ее функцию flexviews для вашего конкретного случая использования.

...