MySQL Temporary Table(臨時表)指令使用與介紹
MySQL打從3.23版開始就加入Temporary Table(臨時表)的功能
而MySQL的Temporary Table(臨時表)相當適用在複雜的子查詢上,如果有一個300萬筆的資料表,而你只需要用到其中的一千筆,而且還需要重覆的篩選、比對(Join)這一千筆資料的話,那麼Temporary Table(臨時表)能夠減少重複查詢大資料表的次數,也能讓資料的篩選和比對變得更容易
下面簡單說明MySQL的Temporary Table(臨時表)指令如何使用
首先建立一個測試用的使用者資料表(如下圖)
-- 在創建 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`;
-- 注意:只有在CREATE和DROP的時候需要加上 TEMPORARY TABLE `表名稱`,其他操作不用,因此操作的時候要特別小心。也要養成不要讓TEMPORARY TABLE和實體表使用相同名稱的好習慣,否則誤操作的話可是會欲哭無淚的...
以上就是TEMPORARY TABLE簡單的使用與操作方法
下面簡單跟大家說明TEMPORARY TABLE的幾個特性
1. 功能與實體表相同,可以儲存資料、建立、刪除、增加INDEX、PRIMARY KEY...等功能
2. 不可以被reopen(在同一個查詢指令內,查詢TEMPORARY TABLE兩次,但實體表可以)
3. 在同一個連線下會持續存在,當連線關閉時,TEMPORARY TABLE會自動被刪除
4. 表的大小取決於 tmp_table_size 的設定值,當表的大小超過這個設定值資料表會將表存入磁盤,則造成效能大減
如果覺得對你有幫助的話. 請幫小弟按個讚吧~
參考資料:
留言列表