使用場景:臨時表主要用于對大數(shù)據(jù)量的表上作一個子集,提高查詢效率。普通臨時表,從大表中撈取部分的數(shù)據(jù),可以在一個連接內重復使用,提速
成都創(chuàng)新互聯(lián)公司-專業(yè)網站定制、快速模板網站建設、高性價比紅橋網站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式紅橋網站制作公司更省心,省錢,快速模板網站建設找我們,業(yè)務覆蓋紅橋地區(qū)。費用合理售后完善,十載實體公司更值得信賴。
實現(xiàn)視圖,優(yōu)化器有2種選擇:臨時表或者合并算法(MERGE),這是由生成視圖的SQL決定的
視圖本身并不存儲數(shù)據(jù),只是存儲了一段待執(zhí)行的sql語句而已,查詢視圖的時候,仍然會訪問原表去查詢,所以查詢性能上并不能提升,更多的是簡化Sql的復雜性、安全控制的考慮。如果提升性能的話,臨時表可能是更好的選擇。
視圖的優(yōu)點:
分兩步就簡單點,第一步把需要合并的插入到臨時表里面,第二步把臨時表的數(shù)據(jù)添加到表1中,大概SQL語句:
SELECT * INTO TEMP TABLE tmp FROM 表2 WHERE ...........NOT IN 或者NOT EXISTS選取表1中沒有的數(shù)據(jù)......
INSERT INTO 表2 SELECT * FROM tmp
假設sdeg和zbug的表結構 都是
ID varchar(4) primary key,
Name varchar(8),
Dept varchar(10),
存儲過程如下
CREATE PROCEDURE table_combine()
BEGIN
#第一步把sdeg和zbug兩個表進行聯(lián)合輸出到臨時表tmp_tab中
create temporary table tmp_tab select * from sdeg union select * from zbut;
#第二步創(chuàng)建結果表sdut,并創(chuàng)建主鍵
create table sdut(ID varchar(4) primary key, Name varchar(8),Dept varchar(10));
#第三步把臨時表里面的重復數(shù)據(jù)過濾并寫入sdut
INSERT INTO sdut(ID,Name,Dept) SELECT distinct ID,Name,Dept FROM tmp_tab;
#drop臨時表
drop table tmp_tab;
END
MySQL InnoDB 表數(shù)據(jù)頁或者二級索引頁(簡稱數(shù)據(jù)頁或者索引頁)的合并與分裂對 InnoDB 表整體性能影響很大;數(shù)據(jù)頁的這類操作越多,對 InnoDB 表數(shù)據(jù)寫入的影響越大。
MySQL 提供了一個數(shù)據(jù)頁合并臨界值(MERGE_THRESHOLD),在某些場景下,可以人為介入,減少數(shù)據(jù)頁的合并與分裂。
在 InnoDB 表里,每個數(shù)據(jù)頁默認16K 大小,默認 MERGE_THRESHOLD 值為 50,取值范圍從 1 到 50,默認值即是最大值。也就是當頁面記錄數(shù)占比小于 50% 時,MySQL 會把這頁和相鄰的頁面進行合并,保證數(shù)據(jù)頁的緊湊,避免太多浪費。
新聞名稱:mysql怎么合并臨時表 mysql如何建立臨時表
鏈接URL:http://chinadenli.net/article48/hgeghp.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供動態(tài)網站、關鍵詞優(yōu)化、網站內鏈、移動網站建設、品牌網站制作、面包屑導航
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)