mysql多表聯(lián)合查詢優(yōu)化的問題
問題描述
有3個(gè)結(jié)構(gòu)幾乎一樣的表,需要從3個(gè)表中查詢數(shù)據(jù),每個(gè)表大概有幾萬條數(shù)據(jù),用下面的查詢語句,耗時(shí)在5秒以上,請(qǐng)問有什么辦法可以提高查詢效率
SELECT * FROM(SELECT id,title,inputtime,description,url,thumb,status FROM sc_newsUNIONSELECT id,title,inputtime,description,url,thumb,status FROM sc_picUNION SELECT id,title,inputtime,description,url,thumb,status FROM sc_video ) AS aWHERE a.title like ’%中國%’
3張表是無關(guān)聯(lián)的,所以采用 UNION 方法
問題解答
回答1:分成3次查詢,在server端合并結(jié)果
回答2:你把union改成union all效率會(huì)好點(diǎn)
回答3:需要看一下執(zhí)行計(jì)劃,不過模糊查詢估計(jì)只能走全表掃描的方式了。建議把where條件放在三個(gè)查詢語句里面,可能會(huì)提升一些性能。
如果確認(rèn)三個(gè)結(jié)果集沒有相同的記錄,可以將union換成union all,可以減少結(jié)果集合并去重所花費(fèi)的時(shí)間。
回答4:為什么不試試left join
回答5:只有我一個(gè)人覺得所有l(wèi)ike查詢都需要用sphinx/es/solr來處理嗎?
回答6:我也遇到了這種問題
回答7:你前臺(tái)需要一次取出所有結(jié)果嗎? 不需要可以考慮limit 部分查詢
相關(guān)文章:
1. javascript - 為什么我的vue里的router-link不起作用2. javascript - 求助Angular 跨控制器調(diào)用方法可行嗎?3. CSS更改未得到反映。為什么?4. 用戶在微信小程序支付成功以后,財(cái)務(wù)在微信支付后臺(tái)用交易單號(hào)能查到這筆訂單 但財(cái)務(wù)說錢沒有入對(duì)公賬號(hào)?5. javascript - node redirect重定向失敗6. javascript - JS使用ele.style.backgoundImage = ’’ =’none’取消背景圖片都無效7. a標(biāo)簽跨域下載文件能否重命名?8. android - weex 項(xiàng)目createInstanceReferenceError: Vue is not defined9. javascript - 如圖,百度首頁,查看源代碼為什么什么都沒有?10. pdo 寫入到數(shù)據(jù)庫的內(nèi)容為中文的時(shí)候?qū)懭雭y碼
