怎樣提高mysql中or和in的效率

怎樣提高MySQL中or和in的效率,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),漢陽企業(yè)網(wǎng)站建設(shè),漢陽品牌網(wǎng)站建設(shè),網(wǎng)站定制,漢陽網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,漢陽網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。

前言

今天遇到了一個網(wǎng)站卡死的問題,過了幾分鐘就好了,找到了一個定時腳本中有個sql,執(zhí)行效率很慢,DBA建議將or改為in,效率提升了幾百倍

場景描述

1.兩個表關(guān)聯(lián)查詢
2.table1 的數(shù)據(jù)量接近100萬
3.table2 的數(shù)據(jù)量接近900萬
4.查詢條件中的title字段沒有加索引
5.原始查詢語句

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title="衣服" or b.title="褲子" or b.title="帽子" limit 0,100

6.改造后的查詢語句

SELECT a.id as id FROM `table1`as a left join table2 as b on a.id=b.id WHERE b.title IN ("衣服","褲子","帽子") limit 0,100

改造后的效率

原sql的執(zhí)行時間為5s,更改之后只需要0.01s

原因

查了一下資料,在數(shù)據(jù)量過百萬,并且條件沒有加索引,or的查詢效率遠遠低于in,or的效率為O(n),而in的效率為O(logn), 當(dāng)n越大的時候效率相差越明顯。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

名稱欄目:怎樣提高mysql中or和in的效率
地址分享:http://muchs.cn/article6/ghodig.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、搜索引擎優(yōu)化標簽優(yōu)化、服務(wù)器托管、網(wǎng)頁設(shè)計公司、軟件開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運營