最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql關(guān)聯(lián)子查詢的一種優(yōu)化方法分析

 更新時間:2016年04月19日 11:29:11   作者:mo_guang  
這篇文章主要介紹了mysql關(guān)聯(lián)子查詢的一種優(yōu)化方法,結(jié)合實例形式分析了針對MySQL的關(guān)聯(lián)子查詢進行優(yōu)化的技巧,需要的朋友可以參考下

本文實例講述了mysql關(guān)聯(lián)子查詢的一種優(yōu)化方法。分享給大家供大家參考,具體如下:

很多時候,在mysql上實現(xiàn)的子查詢的性能較差,這聽起來實在有點難過。特別有時候,用到IN()子查詢語句時,對于上了某種數(shù)量級的表來說,耗時多的難以估計。本人mysql知識所涉不深,只能慢慢摸透個中玄機了。

假設(shè)有這樣的一個exists查詢語句:

select * from table1
where exists
  (select * from table2 where id>=30000 and table1.uuid=table2.uuid);

table1為十萬行級的表,table2為百萬行級的表,本機測試結(jié)果用時2.40s。

通過explain可以看到子查詢是一個相關(guān)子查詢(DEPENDENCE SUBQUERY); Mysql會首先對外表table1進行全表掃描,然后根據(jù)返回的uuid逐次執(zhí)行子查詢。如果外層表是一個很大的表,我們可以想象查詢性能會表現(xiàn)得比此次測試更糟糕。

一種簡單的優(yōu)化方案為使用inner join的方法來代替子查詢, 查詢語句則可以改為:

復(fù)制代碼 代碼如下:
select * from table1 innner join table2 using(uuid) where table2.id>=30000;

本機測試結(jié)果用時0.68s。

通過explain可以看到mysql使用了SIMPLE類型(子查詢或union以外的查詢方式); Mysql優(yōu)化器會先過濾table2,然后對table1和table2做笛卡爾積得出結(jié)果集后,再通過on條件來過濾數(shù)據(jù)。

當然了,并不是所有情況下關(guān)聯(lián)子查詢的性能都會差;具體效果需要進行實際的測試才能得出結(jié)果。

更多關(guān)于MySQL相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《MySQL事務(wù)操作技巧匯總》、《MySQL存儲過程技巧大全》、《MySQL數(shù)據(jù)庫鎖相關(guān)技巧匯總》及《MySQL常用函數(shù)大匯總

希望本文所述對大家MySQL數(shù)據(jù)庫計有所幫助。

相關(guān)文章

最新評論

赫章县| 太康县| 上蔡县| 定西市| 任丘市| 白玉县| 楚雄市| 本溪| 扶沟县| 西充县| 措勤县| 邓州市| 马关县| 屯留县| 满洲里市| 新巴尔虎右旗| 诏安县| 运城市| 若尔盖县| 维西| 吉木萨尔县| 射阳县| 合川市| 木兰县| 岑溪市| 温州市| 江川县| 巨鹿县| 新兴县| 明水县| 保亭| 衡水市| 文水县| 盖州市| 炎陵县| 安西县| 湘西| 若羌县| 贵南县| 玛纳斯县| 日喀则市|