2021年6月19日
#
2018年10月25日
#
DB引擎:InnoDB
兩表A,B表均為6W+的記錄。用B表的信息更新A表。
SQL:update A left join B on A.field1 = B.field1 and A.field2 = B.field2
set A.field3 = B.
field3, A.field4 = B.field4
無引擎時(shí):每1000更新需要2分11秒,全部更新大概需要2~3小時(shí)。
此時(shí)加入索引:CREATE INDEX field1_Index ON `A`(`field1`);
注:1、此處只加field1是因?yàn)?field2的內(nèi)容變化很小,就那幾個(gè)值。
2、此SQL里的字段都不是主鍵
再次執(zhí)行SQL,效率依舊。似乎索引沒有作用。為了驗(yàn)證我的想法,查看了執(zhí)行方式:
explain update A left join B on A.field1 = B.field1 and A.field2 = B.field2 set A.field3 = B.field3, A.field4 = B.field4
果然在執(zhí)行時(shí),沒用到索引。找到癥結(jié),那就繼續(xù)找為什么索引沒有被用的原因。
查找過程省略,直接上結(jié)果。
因?yàn)槭莡pdate,所以我認(rèn)為 左聯(lián)和直聯(lián),對(duì)于結(jié)果沒有區(qū)別,但是從左聯(lián)改為直聯(lián)后,
再查詢執(zhí)行方式,發(fā)現(xiàn)就能使用索引(原因暫不知道,以后知道了再寫)
于是再次執(zhí)行如下SQL:
update A inner join B on A.field1 = B.field1 and A.field2 = B.field2 set A.field3 = B.field3, A.field4 = B.field4
6W+的數(shù)據(jù)執(zhí)行時(shí)間:1.43秒
優(yōu)化完畢。
另,因?yàn)橐陨献侄味挤侵麈I,所以 SQL修改成以下方式執(zhí)行似乎更快,查詢執(zhí)行方式,用到了主鍵索引和我自己加的索引
update A left join B on A.field1 = B.field1 and A.field2 = B.field2
set A.field3 = B.field3, A.field4 = B.field4
where A.key in (select key from A)
附:
刪除索引:drop INDEX field1_Index ON `A`;
查看索引:show index from A
查看線程:select * from information_schema.processlist t
show processlist
殺線程: kill processId
2007年1月31日
#
2006年2月22日
#
COBOL的項(xiàng)目就要結(jié)束了,下個(gè)項(xiàng)目就是.NET.說實(shí)在話,我是比較期待,但是如果是C#,我就更加的HAPPY了,偏偏要是VB.NET,看了半天,發(fā)現(xiàn)怎么就那么的奇怪呢!就感覺看一段沒有斷句的文言文!還好,現(xiàn)在裝了個(gè)中文的MSDN,比以前看日文的MSDN要舒服多了,MD,看起來真費(fèi)勁!
今天看VB.NET的代碼,突然有種感覺,就像剛到深圳去實(shí)習(xí),看人家以前做的項(xiàng)目的代碼一樣,好費(fèi)勁,很多的關(guān)鍵字,咋一看還不知道,稍一迷糊就看到后面,突然發(fā)現(xiàn)前面的幾句代碼是啥意思啊!不知道做的時(shí)候又是什么樣一種感覺,總的來說就是奇怪!ff
2006年1月24日
#
就要過年了,我卻離家太遠(yuǎn),不能回去過年,生平以來第一次不在家里過年,這是我出來工作的第一個(gè)年頭就在外鄉(xiāng)過!
真的好想回家,想念家里的父母,不知道他們身體是否還好!想念我那從小生活的地方,想回到我以前住過的房間睡上一晚!
2006年1月9日
#
6:30 起床(起床之后,一定要吻一下正在熟睡的老婆
的臉,但動(dòng)作要輕,不得吵醒老婆 )
6:35--7:00 煅煉身體(在老婆要抱的時(shí)候,可以輕易抱
上七樓;在老婆受到欺負(fù)的時(shí)候 可以以一敵十)
7:00--7:15 打開音響,叫老婆起床(一日之計(jì)在于晨,
這時(shí)候的女人這是一日之中最可愛的時(shí)候,一般都會(huì)有點(diǎn)撒嬌,
叫起床時(shí),一定要溫柔,動(dòng)作要輕,輕輕地?fù)饋恚?BR> 7:15--7:30 幫老婆穿衣服(千萬要小心,如果像麥當(dāng)娜
一樣,把內(nèi)衣穿在外面的話,那我就等死吧)
7:30--7:45 和老婆一起洗漱(有三要:要幫老婆擠好牙
膏,要幫老婆放好洗臉?biāo)獛屠掀攀犷^)
7:45--8:00 送老婆上班(以最快的速度送她上公車)
8:45--8:30 自己上班
8:30--12:00 上班(努力工作,有事做要做,沒事做找出
事也要做)
12:00--12:10 打電話給老婆(問老婆上午過得怎么樣,
中午要吃什么東西……這個(gè)不用教了?)
12:10--12:40 吃工作餐(記住,一定要吃工作餐,不得
吃別的東東,就算吃了別的東東,價(jià)格也不可以超過5元)
12:40--13:00 小棲片刻(為了下午更好的工作,一定要
小棲,不得在公司四處看小mm)
13:00--17:30 努力工作(不努力工作怎么養(yǎng)老婆?)
17:30--18:00 接老婆下班(看情況,不加班的時(shí)候!一定要準(zhǔn)時(shí),不得讓老婆久等)
18:00--19:00 陪老婆逛街(逛街是男人的必修課,每天必修。其間,老婆要買什么東西,一定要大方,不得有嫌貴不買之行為,如果老婆不買什么東西,一定要買東西送給老婆)
19:00--20:00 吃飯(老婆做,不能把她寵壞了)
20:00--22:00 陪老婆(老婆要看電視,不得換臺(tái);老婆要聊天,不得不理)
22:00--22:20 洗澡(為節(jié)約用水,一定要和老婆一起洗,幫老婆搓背)
22:20 睡覺(被子要先鋪好,老婆要抱好,不得比老婆先睡著)