共計(jì) 1232 個(gè)字符,預(yù)計(jì)需要花費(fèi) 4 分鐘才能閱讀完成。
自動(dòng)寫代碼機(jī)器人,免費(fèi)開通
這期內(nèi)容當(dāng)中丸趣 TV 小編將會(huì)給大家?guī)碛嘘P(guān)如何在 MySQL 中使用臨時(shí)表,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
創(chuàng)建臨時(shí)表很容易,給正常的 CREATE TABLE 語句加上 TEMPORARY 關(guān)鍵字:
CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
臨時(shí)表將在你連接 MySQL 期間存在。當(dāng)你斷開時(shí),MySQL 將自動(dòng)刪除表并釋放所用的空間。當(dāng)然你可以在仍然連接的時(shí)候刪除表并釋放空間。
DROP TABLE tmp_table
如果在你創(chuàng)建名為 tmp_table 臨時(shí)表時(shí)名為 tmp_table 的表在數(shù)據(jù)庫中已經(jīng)存在,臨時(shí)表將有必要屏蔽(隱藏)非臨時(shí)表 tmp_table。
如果你聲明臨時(shí)表是一個(gè) HEAP 表,MySQL 也允許你指定在內(nèi)存中創(chuàng)建它:
CREATE TEMPORARY TABLE tmp_table (
name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
) TYPE = HEAP
因?yàn)?HEAP 表存儲(chǔ)在內(nèi)存中,你對(duì)它運(yùn)行的查詢可能比磁盤上的臨時(shí)表快些。然而,HEAP 表與一般的表有些不同,且有自身的限制。詳見 MySQL 參考手冊(cè)。
正如前面的建議,你應(yīng)該測(cè)試臨時(shí)表看看它們是否真的比對(duì)大量數(shù)據(jù)庫運(yùn)行查詢快。如果數(shù)據(jù)很好地索引,臨時(shí)表可能一點(diǎn)不快。
1、臨時(shí)表再斷開于 mysql 的連接后系統(tǒng)會(huì)自動(dòng)刪除臨時(shí)表中的數(shù)據(jù),但是這只限于用下面語句建立的表:
定義字段:
CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
2) 直接將查詢結(jié)果導(dǎo)入臨時(shí)表
CREATE TEMPORARY TABLE tmp_table SELECT * FROM table_name
2、另外 mysql 也允許你在內(nèi)存中直接創(chuàng)建臨時(shí)表,因?yàn)槭窃趦?nèi)存中所有速度會(huì)很快,語法如下:
CREATE TEMPORARY TABLE tmp_table ( name VARCHAR(10) NOT NULL,
value INTEGER NOT NULL
)
TYPE = HEAP
3、從上面的分析可以看出臨時(shí)表的數(shù)據(jù)是會(huì)被清空的,你斷開了連接就會(huì)被自動(dòng)清空,但是你程序中不可能每發(fā)行一次 sql 就連接一次數(shù)據(jù)庫吧 (如果是這樣的話,那就會(huì)出現(xiàn)你擔(dān)心的問題,如果不是就沒有問題),因?yàn)橹挥袛嚅_數(shù)據(jù)庫連接才會(huì)被清空數(shù)據(jù),在一個(gè)數(shù)據(jù)庫連接里面發(fā)行多次 sql 的話系統(tǒng)是不會(huì)自動(dòng)清空臨時(shí)表數(shù)據(jù)的。
上述就是丸趣 TV 小編為大家分享的如何在 MySQL 中使用臨時(shí)表了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道。
向 AI 問一下細(xì)節(jié)