在數(shù)據(jù)量不大的情況下多表連接查詢和多次單表查詢的效率差不多。如果數(shù)據(jù)量足夠大,那肯定是多次單表查詢的效率更高。
有的一些公司里面,都會禁用多表連接查詢,原因就是一旦數(shù)據(jù)量足夠大的時候多表連接查詢效率會很慢,而且不利于分庫分表的查詢優(yōu)化。
這種僅限于大表關(guān)聯(lián)查詢,如果小表還是建議join查詢。
例:
SELECT?p.id,?sn.name?AS?nodeName,?o.EndTs?AS?expiryTime,?o.PaymentOrder?AS?consumptionPattern,?cus.cusname?AS?cusName?
FROM?cloudlink_port?p?
INNER?JOIN?cloudlink_servernode?sn?ON?sn.id=p.server_node_id?AND?sn.deleted?=0?
INNER?JOIN?res.res_cusinfcontract?o?ON?o.ContractNo=p.order_no
INNER?JOIN?res.res_cusinf?cus?ON?cus.id=p.customer_id
WHERE?p.order_no='L2021082459016';
可以分解成下面這些查詢來代替:
SELECT?p.id?FROM?cloudlink_port?p?LIMIT?1;
SELECT?sn.name?FROM?cloudlink_servernode?sn?WHERE?sn.deleted?=0?LIMIT?1;
SELECT?o.EndTs,?o.PaymentOrder?FROM?res.res_cusinfcontract?o?LIMIT?1;
SELECT?cus.cusname?FROM?res.res_cusinf?cus?LIMIT?1;
需要注意的是mysql數(shù)據(jù)庫查看表內(nèi)容,如果查詢只有1條的情況下,加上 limit 1 效率會更高mysql數(shù)據(jù)庫查看表內(nèi)容,
大致一看,也沒什么大差別,原本一條查詢,這里卻變成了多條查詢,返回結(jié)果又是一模一樣。到底為什么要這樣做?這樣做的優(yōu)勢是啥?帶著問題往下看。
用分解關(guān)聯(lián)查詢的方式查詢具有以下優(yōu)勢:
感謝閱讀,希望對你有所幫助:)
來源:////
推薦:
PS:因為公眾號平臺更改了推送規(guī)則,如果不想錯過內(nèi)容,記得讀完點一下“在看”,加個“星標(biāo)”,這樣每次新文章推送才會第一時間出現(xiàn)在你的訂閱列表里。點“在看”支持我們吧!