CREATE TEMPORARY TABLE mysql (создать временную таблицу,)

Опубликовано:

чтобы создать временную таблицу, копию уже существующей, используйте выражение (несколько примеров) =

CREATE TEMPORARY TABLE new_t LIKE old_t;
CREATE TEMPORARY TABLE 123_avto AS (
 SELECT *
 FROM avto
 );

где
new_t = это имя новой таблицы
а
old_t = это имя старой (уже существующей в вашей базе данных)таблицы

База данных MySQL допускает создание временных таблиц.

Поскольку mysql не поддерживает вложенные SELECT, можно разбить один сложный SELECT на несколько простых с использованием временных таблиц.

В данном примере мы будем использовать временную таблицу для хранения IP-адресов посетителей из четырех полей:

id_ip — первичный ключ таблицы;
ip — IP-адрес посетителя;
id_user— вторичный ключ, устанавливающий дополнительную связь с таблицей посетителей users. В таблице users этот ключ выступает в качестве первичного;
puttime — время посещения.
Допустим, нам надо выбрать последний IP-адрес для каждого посетителя и время, когда он с него зашел. Можно поступить в два этапа. Сначала выбрать вторичные ключи пользователей id_user и соответствующее им время последнего посещения, а затем в цикле выбрать соответствующие им IP-адреса.

Выбор IP-адреса каждого посетителя и времени посещения
 Устанавливаем соединение с базой данных
 include "config.php";
 // Формируем SQL-запрос
 $query ="SELECT DISTINCT(id_user) AS id_user,
 MAX(puttime) AS max_time
 FROM ips
 GROUP BY id_user";
 // Выполняем SQL-запрос
 $first = mysql_query($query);
 if($first)
 {
 while($res = mysql_fetch_array($first))
 {
 // В цикле формируем второй SQL-запрос
 $query ="SELECT * FROM ips
 WHERE id_user = ". $res[`id_user`]."
 AND puttime=".$res[`max_time`];
 $final = mysql_query($query);
 $result = mysql_fetch_array($final);
 echo $result[`ip`]."-".$result[`puttime`]."
";
 }
 }
 ?>

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

Создание временной таблицы с результатами запроса

 $query ="CREATE TEMPORARY TABLE temp_table
 SELECT id_user, puttime, ip FROM ips
 ORDER BY id_user,time DESC";
 if(mysql_query($query))
 {
 $sel =&quotSELECT id_user, puttime, ip
 FROM temp_table GROUP BY id_user";
 $res = mysql_query($sel);
 if ($res)
 {
 while($result = mysql_fetch_array($res))
 {
 echo $result["id user"]." ".$resultf"puttime"]." ".$result["ip"].&quot
”;
 }
 }
 }
 ?>

Как видно из листинга, выполнение второго SQL-запроса вынесено из тела
цикла. После выполнения скрипта таблица temp_table, созданная в памяти, будет
уничтожена автоматически.

Понравилась статья, расскажи о ней друзьям, нажми кнопку!