日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

临时表

發布時間:2023/12/29 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 临时表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

定義:

臨時表是建立在系統臨時文件夾中的表,如果使用得當,完全可以像普通表一樣進行各種操作,在VFP退出時自動被釋放。

特點:

臨時表用于保存一些臨時數據;

臨時表只在當前連接可見。當關閉連接時,MySQL會刪除臨時表,釋放所有資源;

臨時表的數據和表結構都存儲在內存中,內存表

溯源:

臨時表在MySQL 3.23版本中添加,如果你的MySQL版本低于 3.23版本就無法使用MySQL的臨時表。

創建臨時表:
#創建臨時表 mysql> CREATE TEMPORARY TABLE SalesSummary (product_name VARCHAR(50) NOT NULL, total_sales DECIMAL(12,2) NOT NULL DEFAULT 0.00, avg_unit_price DECIMAL(7,2) NOT NULL DEFAULT 0.00, total_units_sold INT UNSIGNED NOT NULL DEFAULT 0 ); Query OK, 0 rows affected #插入數據 mysql> INSERT INTO SalesSummary(product_name, total_sales, avg_unit_price, total_units_sold)VALUES('cucumber', 100.25, 90, 2); Query OK, 1 row affected #查詢數據 mysql> SELECT * FROM SalesSummary; +--------------+-------------+----------------+------------------+ | product_name | total_sales | avg_unit_price | total_units_sold | +--------------+-------------+----------------+------------------+ | cucumber | 100.25 | 90 | 2 | +--------------+-------------+----------------+------------------+ 1 row in set #這里我們查詢數據庫的表格,臨時表是看不到的; mysql> show tables; +----------------+ | Tables_in_test | +----------------+ | user | +----------------+ 1 row in set #雖然關閉連接,會自動銷毀;我們也可以自己銷毀 mysql> DROP TABLE SalesSummary; Query OK, 0 rows affectedmysql> SELECT * FROM SalesSummary; 1146 - Table 'test.salessummary' doesn't exist mysql>
注意:

如果創建的臨時表和數據庫原有的表格的名字相同時,原有原有的表格是不可見的;

#數據庫原表 mysql> select * from user; +----+------+ | id | name | +----+------+ | 12 | qwq | | 13 | 2ewe | +----+------+ 2 rows in set #創建同名的臨時表 mysql> create temporary table user (id int,sex int); Query OK, 0 rows affected #臨時表插入數據 mysql> insert into user (id,sex) values (1,0); Query OK, 1 row affected #原表覆蓋 mysql> select * from user; +----+-----+ | id | sex | +----+-----+ | 1 | 0 | +----+-----+ 1 row in set

在MySQL5.7版本之前,臨時表的存儲引擎默認為myisam,myisam臨時表在SQL執行結束后,會自動刪除臨時表。然而從5.7版本開始,臨時表的默認存儲引擎變為innodb,雖然在性能上有了一定的提升,但是由于innodb引擎的臨時表共用表空間ibtmp1,導致在高并發下,多個session同時創建臨時表時,該表空間會變得非常大,并且不能動態縮小,除非重啟MySQL,否則無法釋放。(innodb關閉連接臨時表會銷毀的,注意區分)

解決方法:將臨時表的存儲引擎設置成為myisam;

優點:

客戶端新建了一個會話,這個會話只是服務器與客戶端1對1的關系,客戶端可能在服務端建立一個臨時表,滿足客戶端處理某些事務的需求,當客戶端退出會話后,這個臨時表自動drop,沒有任何數據信息占用數據庫空間。
客戶端建立臨時表只為特定的事務服務,這個表具有專用和私有性,不需要共享給其他人。
客戶端建立的臨時表具有單獨操作和讀寫性能,因此速度上和處理效率上更高,這

應用場景:

1.短期內有很多DML操作,比如說網購的購物車,放入東西(insert)、添加數量(update)、刪除商品(delete),但是一旦你結算完成以后,你的這些數據就不再需要了,可以使用臨時表存儲;

2.導出部分數據時,當一個中轉站;

3.很多張聯查時,可以先部分聯查,保存到臨時表,然后使用臨時表聯查;

總結

以上是生活随笔為你收集整理的临时表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。