php mysql臨時表的應用

2021-09-01 19:04:07 字數 795 閱讀 9883

當工作在非常大的表上時,你可能偶爾需要執行很多查詢獲得乙個大量資料的小的子集,不是對整個表執行這些查詢,而是讓mysql每次找出所需的少數記錄,將記錄選擇到乙個臨時表可能更快些,然後對這臨時表執行查詢。

建立臨時表很容易,給正常的create table語句加上temporary關鍵字:

create temporary table tmp_table (

name varchar(10) not null,

value integer not null

)臨時表將在你連線mysql期間存在。當你斷開時,mysql將自動刪除表並釋放所用的空間。當然你可以在仍然連線的時候刪除表並釋放空間。

drop table tmp_table

如果在你建立名為tmp_table臨時表時名為tmp_table的表在資料庫中已經存在,臨時表將有必要遮蔽(隱藏)非臨時表tmp_table。

如果你宣告臨時表是乙個heap表,mysql也允許你指定在記憶體中建立它:

create temporary table tmp_table (

name varchar(10) not null,

value integer not null

) type = heap

因為heap表儲存在記憶體中,你對它執行的查詢可能比磁碟上的臨時表快些。然而,heap表與一般的表有些不同,且有自身的限制。詳見mysql參考手冊。

正如前面的建議,你應該測試臨時表看看它們是否真的比對大量資料庫執行查詢快。如果資料很好地索引,臨時表可能一點不快。

例子如下:

全域性臨時表的應用

在我們開發商務軟體的時候,常常會遇到這樣的乙個問題 怎樣防止使用者重複登入我們的系統?特別是對於銀行或是財務部門,更是要限制使用者以其工號身份多次登入。可能會有人說在使用者資訊表中加一欄位判斷使用者工號登入的狀態,登入後寫1,退出時寫0,且登入時判斷其標誌位是否為1,如是則不讓該使用者工號登入。但是...

36 臨時表和臨時表

臨時表特點 建表語法是create temporary table乙個臨時表只能被建立它的session訪問,對其他執行緒不可見。臨時表和普通表可以同名。同乙個session內有臨時表和普通表的時候,show crete語句 增刪改查訪問的是臨時表。show tabls命令不顯示臨時表。由於臨時表只...

Oracle的臨時表和MySQL的臨時表

最近在oracle遷移mysql過程中遇到了一些關於with as 語法的問題,但是在mysql中是沒有這樣的語法的,因為我使用了臨時表代替了 因此今天做了一些小總結,歡迎各位大佬指導。一 oracle with as語法 with tablename as select select 它在查詢之前...