翻譯|使用教程|編輯:秦林|2022-11-24 09:38:33.063|閱讀 285 次
概述:如何在Navicat 16版本實(shí)現(xiàn)子查詢和聯(lián)接的選擇,小編通過(guò)本文給大家具體介紹,歡迎下載最新版試用體驗(yàn)。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
如果你需要在查詢添加許多聯(lián)接,數(shù)據(jù)庫(kù)服務(wù)器就必須做更多的工作,這可能會(huì)導(dǎo)致數(shù)據(jù)檢索時(shí)間變慢。本文將介紹幾個(gè)你可以執(zhí)行的快速測(cè)試,比較使用聯(lián)接的查詢和包含子查詢的查詢,讓你可以選擇最佳性能的查詢。
大多數(shù)時(shí)候,你可以使用連接或子查詢來(lái)編寫(xiě)查詢。為了說(shuō)明這一點(diǎn),以下有一個(gè)從 MySQL Sakila 示例數(shù)據(jù)庫(kù)中選擇地區(qū)及其相關(guān)城市和地址的查詢。第一個(gè) SELECT 語(yǔ)句使用聯(lián)接,而第二個(gè) SELECT 語(yǔ)句使用子查詢獲取完全相同的數(shù)據(jù):
SELECT co.Country, COUNT(DISTINCT ci.city_id) AS city_cnt, COUNT(a.city_id) AS address_cnt FROM country co INNER JOIN city ci ON co.country_id = ci.country_id INNER JOIN address a ON ci.city_id = a.city_id GROUP BY co.country_id; SELECT Co.Country, (Select COUNT(1) FROM City Ci WHERE Ci.country_id=co.country_id) AS city_cnt, (Select COUNT(1) FROM Address A INNER JOIN city c on a.city_id=c.city_id WHERE C.country_id=co.country_id) AS address_cnt From Country Co;
在 Navicat中,我們可以很容易地比較查詢結(jié)果,因?yàn)樗梢?同時(shí)運(yùn)行多個(gè)查詢。每個(gè)結(jié)果集都顯示在 SQL 編輯器下的一個(gè)選項(xiàng)卡中。在下圖中,結(jié)果 2 選項(xiàng)卡的內(nèi)容顯示在結(jié)果 1 旁邊以便快速比較:
驗(yàn)證了這兩個(gè)語(yǔ)句是等效的之后,我們現(xiàn)在可以比較它們的執(zhí)行時(shí)間。
為此,我們可以選擇其中一個(gè)語(yǔ)句,然后點(diǎn)擊“運(yùn)行”按鈕。只要在編輯器中選擇了文本,該按鈕的標(biāo)簽就會(huì)変為“運(yùn)行已選擇的”。在畫(huà)面底部可以看到運(yùn)行時(shí)間是 0.020秒:
對(duì)第二條語(yǔ)句執(zhí)行相同操作,得出運(yùn)行時(shí)間為 0.021秒 。時(shí)間差異很小,但會(huì)隨著數(shù)據(jù)量的增加而增長(zhǎng):
一個(gè)查詢的執(zhí)行計(jì)劃可以揭示很多關(guān)于它執(zhí)行速度的信息。在 Navicat 中,我們可以點(diǎn)擊“解釋”按鈕來(lái)查看執(zhí)行計(jì)劃。 雖然需要一些練習(xí)才能熟練地解譯解釋的結(jié)果,但這樣做可以在嘗試確定查詢的效率時(shí)帶來(lái)好處。
解釋 1 選項(xiàng)卡顯示第一個(gè)(聯(lián)接)查詢的執(zhí)行計(jì)劃。我們可以一眼看出它涉及 3 個(gè) SIMPLE 選擇:
同時(shí),解釋 2 選項(xiàng)卡列出了一個(gè) PRIMARY 選擇,然后是三個(gè) DEPENDENT SUBQUERY。即使不深入探究,我們也可以看到執(zhí)行第二個(gè)(子查詢)語(yǔ)句需要一個(gè)額外的步驟:
雖然本文似乎證實(shí)了聯(lián)接與子查詢:哪個(gè)更快?文章得出的結(jié)論,但比較連接和子查詢方法頗有價(jià)值的。在任何情況下,子查詢?nèi)匀挥袃?yōu)于連接的時(shí)候,例如當(dāng)你必須即時(shí)計(jì)算聚合值并在外部查詢中使用它進(jìn)行比較時(shí)。
Navicat Premium是一個(gè)可連接多種數(shù)據(jù)庫(kù)的管理工具,它可以讓你以單一程序同時(shí)連接到MySQL、Oracle及PostgreSQL等數(shù)據(jù)庫(kù),讓管理不同類(lèi)型的數(shù)據(jù)庫(kù)更加的方便。慧都2022年終狂歡活動(dòng)火熱進(jìn)行中,全場(chǎng)產(chǎn)品超低價(jià)來(lái)襲,Navicat系列產(chǎn)品最高直降600元,了解更多活動(dòng)詳情,請(qǐng)咨詢。
數(shù)據(jù)庫(kù)管理工具交流群:7645665608 歡迎進(jìn)群交流討論
正版數(shù)據(jù)庫(kù)管理軟件下載、購(gòu)買(mǎi)、授權(quán)咨詢,請(qǐng)點(diǎn)這里!
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn