MySQL Temporary Table(臨時表)指令使用與介紹

 

    MySQL打從3.23版開始就加入Temporary Table(臨時表)的功能

    MySQLTemporary Table(臨時表)相當適用在複雜的子查詢上,如果有一個300萬筆的資料表,而你只需要用到其中的一千筆,而且還需要重覆的篩選、比對(Join)這一千筆資料的話,那麼Temporary Table(臨時表)能夠減少重複查詢大資料表的次數,也能讓資料的篩選和比對變得更容易

    下面簡單說明MySQLTemporary Table(臨時表)指令如何使用

    首先建立一個測試用的使用者資料表(如下圖)

 mysql_1  

 

    -- 在創建 TEMPORARY TABLE 前應該先刪除同名的 TEMPORARY TABLE

    DROP TEMPORARY TABLE IF EXISTS `t1_demo_user`;

    -- 說明:有可能上一個connection也有使用相同名稱的 TEMPORARY TABLE 但是使用完後沒有刪除且connection還沒有關閉,就無法建立成功

 

    -- 建立名稱為 t1_demo_user TEMPORARY TABLE 

    CREATE TEMPORARY TABLE `t1_demo_user`(

        `t_uid` INT NOT NULL AUTO_INCREMENT,

        `t_uname` VARCHAR(50) NOT NULL,

        `t_create_time` DATE,

        PRIMARY KEY(`t_uid`)

    );

    -- 說明:TEMPORARY TABLE 可以使用與建立一般資料表相同的語法,並加上PRIMARY KEY

 

    -- SELECT出來的資料存到 TEMPORARY TABLE 

    INSERT INTO t1_demo_user(`t_uname`, `t_create_time`)

    SELECT `name`, `create_time` FROM users WHERE create_time = '2015-05-30';

 

    -- 接下來就可SELECT建立完成的 TEMPORARY TABLE 

    SELECT * FROM t1_demo_user;

-- 說明:這邊可以明顯發現欄位與內容已經和原資料表不同(如下圖)

 

 

    -- TEMPORARY TABLE 加上INDEX

    ALTER TABLE t1_demo_user ADD INDEX(`t_uname`);

 

    -- 最後驗證INDEX是不是有正確加上(如下圖)

    SHOW CREATE TABLE t1_demo_user;

 

 

    -- 使用完成後刪除TEMPORARY TABLE

    DROP TEMPORARY TABLE IF EXISTS `t1_demo_user`;

    -- 注意:只有在CREATEDROP的時候需要加上 TEMPORARY TABLE `表名稱`,其他操作不用,因此操作的時候要特別小心。也要養成不要讓TEMPORARY TABLE和實體表使用相同名稱的好習慣,否則誤操作的話可是會欲哭無淚的...

 

以上就是TEMPORARY TABLE簡單的使用與操作方法

 

    下面簡單跟大家說明TEMPORARY TABLE的幾個特性

    1. 功能與實體表相同,可以儲存資料、建立、刪除、增加INDEXPRIMARY KEY...等功能

    2. 不可以被reopen(在同一個查詢指令內,查詢TEMPORARY TABLE兩次,但實體表可以)

    3. 在同一個連線下會持續存在,當連線關閉時,TEMPORARY TABLE會自動被刪除

    4. 表的大小取決於 tmp_table_size 的設定值,當表的大小超過這個設定值資料表會將表存入磁盤,則造成效能大減

  

    如果覺得對你有幫助的話. 請幫小弟按個讚吧~

 

    參考資料:

    MySQL tmp_table_size 設定

 

  

arrow
arrow

    newaurora 發表在 痞客邦 留言(0) 人氣()