国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

mysql關聯子查詢的一種優化方法分析

2024-07-24 12:44:56
字體:
來源:轉載
供稿:網友

本文實例講述了mysql關聯子查詢的一種優化方法。,具體如下:

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

假設有這樣的一個exists查詢語句:

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

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

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

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

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

本機測試結果用時0.68s。

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

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

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

希望本文所述對大家MySQL數據庫計有所幫助。

您可能感興趣的文章:

MySQL中三種關聯查詢方式的簡單比較mysql中的跨庫關聯查詢方法淺談mysql中多表不關聯查詢的實現方法MySQL中表子查詢與關聯子查詢的基礎學習教程實例講解Java的MyBatis框架對MySQL中數據的關聯查詢MyBatis實踐之動態SQL及關聯查詢Yii2實現跨mysql數據庫關聯查詢排序功能代碼mysql一對多關聯查詢分頁錯誤問題的解決方法如何利用分析函數改寫范圍判斷自關聯查詢詳解
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 五华县| 天津市| 依安县| 额敏县| 左权县| 凯里市| 赤峰市| 仪征市| 名山县| 乌海市| 遂溪县| 方城县| 松桃| 磐石市| 辉县市| 文登市| 上栗县| 灵宝市| 乐亭县| 鹿邑县| 扎囊县| 通城县| 吉木萨尔县| 镇巴县| 广灵县| 衢州市| 广州市| 富源县| 抚顺市| 丰城市| 白山市| 抚远县| 抚松县| 佛坪县| 唐河县| 淳化县| 五家渠市| 江阴市| 竹溪县| 南木林县| 屏南县|