mysql臨時表的使用

成都創(chuàng)新互聯(lián)公司專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、田東網(wǎng)絡(luò)推廣、重慶小程序開發(fā)公司、田東網(wǎng)絡(luò)營銷、田東企業(yè)策劃、田東品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯(lián)公司為所有大學(xué)生創(chuàng)業(yè)者提供田東建站搭建服務(wù),24小時服務(wù)熱線:13518219792,官方網(wǎng)址:chinadenli.net
一、腳本
use edisondb;
drop procedure if exists query_performance_test;
DELIMITER //
create procedure query_performance_test()
begin
declare begintime time;
declare endtime time;
set begintime=curtime();
DROP TEMPORARY TABLE IF EXISTS userinfo_tmp;
CREATE TEMPORARY TABLE userinfo_tmp(
i_userid int,
v_username varchar(30)
) ENGINE = MEMORY;
insert into userinfo_tmp(i_userid,v_username)
select i_userid,v_username
from userinfo
where i_userid1000 and i_userid8000;
select * from userinfo_tmp;
DROP TEMPORARY TABLE IF EXISTS userinfo_tmp;
set endtime=curtime();
select endtime-begintime;
end
//
DELIMITER ;
call query_performance_test();
UPDATE tb1,tb2 SET tb1.address=tb2.address WHERE tb1.name=tb2.name用上面這個sql語句,舉一反三吧
語法不對:
update?tdb_goods?a,tdb_goods_cate?b?set?goods_cate?=?cate_id?where?goods_cate?=?cate_name;
其中g(shù)oods_cate = cate_id和goods_cate = cate_name你每個字段前最好加上a或b的前綴。
本期我們用 MySQL 提供的 DBUG 工具來研究 MySQL 的 SQL 處理流程。
起手先造個實例
這里得稍微改一下實例的啟動文件 start,將 CUSTOM_MYSQLD 改為 mysqld-debug:
重啟一下實例,加上 debug 參數(shù):
我們來做一兩個實驗,說明 DBUG 包的作用:
先設(shè)置一個簡單的調(diào)試規(guī)則,我們設(shè)置了兩個調(diào)試選項:
d:開啟各個調(diào)試點的輸出
O,/tmp/mysqld.trace:將調(diào)試結(jié)果輸出到指定文件
請點擊輸入圖片描述
然后我們創(chuàng)建了一張表,來看一下調(diào)試的輸出結(jié)果:
請點擊輸入圖片描述
可以看到 create table 的過程中,MySQL 的一些細節(jié)操作,比如分配內(nèi)存 alloc_root 等
這樣看還不夠直觀,我們增加一些信息:
請點擊輸入圖片描述
來看看效果:
請點擊輸入圖片描述
可以看到輸出變成了調(diào)用樹的形式,現(xiàn)在就可以分辨出 alloc_root 分配的內(nèi)存,是為了解析 SQL 時用的(mysql_parse)
我們再增加一些有用的信息:
請點擊輸入圖片描述
可以看到結(jié)果中增加了文件名和行號:
請點擊輸入圖片描述
現(xiàn)在我們可以在輸出中找一下統(tǒng)計表相關(guān)的信息:
請點擊輸入圖片描述
可以看到 MySQL 在這里非常機智,直接執(zhí)行了一個內(nèi)置的存儲過程來更新統(tǒng)計表。
沿著 que_eval_sql,可以找到其他類似的統(tǒng)計表,比如下面這些:
請點擊輸入圖片描述
請點擊輸入圖片描述
本次實驗中,我們借助了 MySQL 的 DBUG 包,來讓 MySQL 將處理過程暴露出來。MySQL 中類似的技術(shù)還有不少,比如 performance_schema,OPTIMIZER_TRACE 等等。
這些技術(shù)將 MySQL 的不同方向的信息暴露出來,方便大家理解其中機制。
MySql數(shù)據(jù)庫中存在大量的表結(jié)構(gòu),而且這些表都存在一個共同點,就是表中都有相同字段,比如id,name,city,adress,lat,lng。表中字段id,name,city,adress不允許為空,所以表中這幾個字段的數(shù)據(jù)都是已經(jīng)賦給實值的,而lat與lng(經(jīng)緯度)是為空的。
現(xiàn)在要寫一個程序,根據(jù)city,adress請求獲取數(shù)據(jù),把循環(huán)每一表中根據(jù)city,adress請求獲取的數(shù)據(jù)更新到相應(yīng)表,相應(yīng)表中對應(yīng)的那一行數(shù)據(jù)。這句話,可能你有點暈,說白了就是,先循環(huán)查詢遍歷表中city與adress的值,根據(jù)city,adress的值請求獲取數(shù)據(jù),更新到相應(yīng)行中,這個表循環(huán)更新完了就跳到下個表中再循環(huán)更新,以此類推,直到全部更新。
update t_time t1
set t1.Bks=
(select max(t2.EndTime) from t_diaoyonglian0703 t2
where t1.TraceID=t2.TraceID and t2.Site='bks')-
(select MIN(t2.BeginTime) from t_diaoyonglian0703 t2
where t1.TraceID=t2.TraceID and t2.Site='bks')
where t1.Date='0703'
本文題目:mysql怎么更新表,mysql表自動更新
分享網(wǎng)址:http://chinadenli.net/article42/hedehc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)、定制開發(fā)、標(biāo)簽優(yōu)化、手機網(wǎng)站建設(shè)、域名注冊、網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)